Java 警告未检查泛型层次结构的转换
Java warns that a casting is unchecked for generics hierarchy
如果我为 class 定义以下类型:
class SomeClass<A extends InterfaceA, B extends InterfaceB, C extends B>
虽然 InterfaceB
扩展了 InterfaceA
。 B 也扩展了 A 但我不能在那里声明。
将 C
类型的对象转换为 [B
、InterfaceA
、InterfaceB
] 中的任何一个时,没有任何警告(如预期的那样)。
但是当将 C
转换为 A
时,会出现未经检查的转换警告。为什么?
因为A不在C的继承链中
InterfaceA
/ \
A InterfaceB
/
B
/
C
因为 C 扩展了 B,B 实现了 InterfaceB,而后者又扩展了 InterfaceA。 C 不扩展 A.
如果我为 class 定义以下类型:
class SomeClass<A extends InterfaceA, B extends InterfaceB, C extends B>
虽然 InterfaceB
扩展了 InterfaceA
。 B 也扩展了 A 但我不能在那里声明。
将 C
类型的对象转换为 [B
、InterfaceA
、InterfaceB
] 中的任何一个时,没有任何警告(如预期的那样)。
但是当将 C
转换为 A
时,会出现未经检查的转换警告。为什么?
因为A不在C的继承链中
InterfaceA
/ \
A InterfaceB
/
B
/
C
因为 C 扩展了 B,B 实现了 InterfaceB,而后者又扩展了 InterfaceA。 C 不扩展 A.