来自扩展的Java类型转换

Twi*_*one 3 java extends types casting

我有以下代码:

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);
}
Run Code Online (Sandbox Code Playgroud)

Eclipse给了我以下警告:

Type safety: Unchecked cast from User to T

为什么我得到警告,如果我定义了T以扩展用户,则不会检查它<T extends User>

SLa*_*aks 7

你误解了泛型.

T extends User并不意味着T User ; 它意味着T可以是任何继承的类User.

如果TFunkyUser,您的代码将无法正常工作.