以下代码在 IntelliJ IDEA 中生成警告 Unchecked cast: 'T' to 'U'
:
interface A {}
class B<T extends A, U extends A> {
void f() {
final T t = null;
final U u = (U) t;
}
}
这对我来说没有意义,因为 T
和 U
被定义为相同的类型。有什么问题?
最佳答案
T
和 U
未定义为同一类型。它们都定义为extends A
,这意味着T
和U
可以是实现A
接口(interface)的无关类.因此类型转换是不安全的。
您唯一可以做的安全转换是将类型T
或U
的引用转换为类型A
。当然你不需要这样的类型转换。您可以简单地将它们分配给 A
类型的变量。
关于java - 从通用类型到相同类型的未经检查的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60165445/