【发布时间】:2021-06-12 00:33:27
【问题描述】:
我很想知道为什么testInnerClass 无法编译,引用:
不兼容的类型:对象无法转换为字符串。
import java.util.List;
class Test<
I extends Test.InnerClass,
S extends Test.StaticInnerClass,
O extends OtherClass> {
void testOtherClass(O other) {
String firstString = other.strings.get(0); //this works
}
void testStaticInnerClass(S staticInner) {
String firstString = staticInner.strings.get(0); //this works
}
void testInnerClass(I inner) {
String firstString = inner.strings.get(0); //this fails:
//"incompatible types: Object cannot be converted to String"
}
static class StaticInnerClass {
List<String> strings;
}
class InnerClass {
List<String> strings;
}
}
class OtherClass {
List<String> strings;
}
testStaticInnerClass 和 testOtherClass 可以正常工作,但我不确定为什么 testInnerClass 会失败。
【问题讨论】:
标签: java generics nested inner-classes type-erasure