Java 警告:类型安全:未选中从对象到主键的强制转换
如何从“Java 警告:类型安全:未选中从对象到主键的强制转换,java,object,warnings,Java,Object,Warnings,如何从“id=(PK)m.invoke(obj,(Object[])null;”中删除警告 private PK getId(T obj){ pkid=null; 对于(字段f:type.getDeclaredFields()){ 如果(f.getAnnotation(Id.class)!=null){ String name=f.getName(); String method=“get”+name.substring(0,1).toUpperCase()+name.substring(1);
id=(PK)m.invoke(obj,(Object[])null;”
中删除警告
private PK getId(T obj){
pkid=null;
对于(字段f:type.getDeclaredFields()){
如果(f.getAnnotation(Id.class)!=null){
String name=f.getName();
String method=“get”+name.substring(0,1).toUpperCase()+name.substring(1);
试一试{
方法m=type.getDeclaredMethod(方法,(类)null);
id=(PK)m.invoke(obj,(Object[])null);
}捕获(例外e){
e、 printStackTrace();
}
}
}
返回id;
}
添加
在方法声明之前方法#invoke
返回一个对象
,因此只有两种方法可以消除警告:
- 将
声明为id
Object
- 在方法声明之前添加
@SuppressWarnings(“未选中”)
class MyClass<PK> {
如果出于任何原因,您无法获得对PK的实际运行时类型的引用,那么您只能抑制警告。它返回PK,因此您不能将id声明为对象
@SuppressWarnings("unchecked")
class MyClass<PK> {
class MyClass<PK> {
private final Class<PK> keyClass;
MyClass(Class<PK> keyClass) {
this.keyClass = keyClass;
}
PK getKey() {
return keyClass.cast(...);
}
}