来自扩展的 Java 类型转换

标签 java types casting extends

我有以下代码:

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 的任何类。

如果 TFunkyUser,您的代码将不起作用。

关于来自扩展的 Java 类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15277278/

相关文章:

class - Haskell中的异构多态性(正确方法)

string - 我的指数超出范围,我开始 panic ,我无法摆脱

Java Gson 在 HashMap 中序列化和反序列化对象(key,Object)

java - 将 Object 转换为泛型类型时未引发无效的 ClassCast 异常

java - 确定对象的类型

Java多线程-等待条件并释放所有线程

java - 在 Wildfly 上使用 OkHttpClient 导致异常

java - 如何在场景生成器的舞台上显示不同的 fxml 文件?切换场景?

typescript - 如何定义一个类型,即从字符串中排除 'a' 的类型?

c++ - 如何转换枚举?