考虑下面的代码:为什么Eclipse会抱怨不安全的类型转换?
public static <T extends SomeObject> List<T> getByClassName(String className) throws GetRecordsException {
try {
Class<T> clazz = (Class<T>) Class.forName(className).asSubclass(SomeObject.class);
return getByClassName(clazz);
} catch (ClassNotFoundException e) {
throw new GetRecordsException("Failed to get class forName: " + className, e);
}
}
Eclipse是彰显投(Class<T>)
以下消息:
Type safety: Unchecked cast from Class<capture#2-of ? extends SomeObject> to Class<T>
这是为什么,考虑到T
应该保证从SomeObject
延长在方法签名?什么情况下可能存在这将是不安全的?