Nic*_*kkk 1 java generics unchecked-cast
以下代码Unchecked cast: 'T' to 'U'在 IntelliJ IDEA 中生成警告:
interface A {}
class B<T extends A, U extends A> {
void f() {
final T t = null;
final U u = (U) t;
}
}
Run Code Online (Sandbox Code Playgroud)
这对我来说没有意义,因为T和U被定义为相同的类型。问题是什么?
T并且U未定义为相同类型。它们都定义为extends A,这意味着T并且U可以是实现A接口的无关类。因此演员表是不安全的。
您可以做的唯一安全转换是转换 typeT或Utype 的引用A。当然,你不需要这样的演员。您可以简单地将它们分配给类型为 的变量A。