我有以下代码:
public static <T extends User> void addUser(String username,
String passwordHash, Class<T> userClass, File usersDir) {
T user = (T) new User(username, passwordHash);
UserManager.toFile(user, usersDir);
}
Eclipse 给我以下警告:
Type safety: Unchecked cast from User to T
如果我定义 T 以使用 <T extends User>
扩展用户,为什么我会收到未检查的警告
最佳答案
你误解了泛型。
T extends User
并不意味着 T
是 User
;这意味着 T
可以是继承 User
的任何类。
如果 T
是 FunkyUser
,您的代码将不起作用。
关于来自扩展的 Java 类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15277278/