Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何引用内部类成员的泛型类型?_Java_Generics_Nested_Inner Classes_Type Erasure - Fatal编程技术网

Java 如何引用内部类成员的泛型类型?

Java 如何引用内部类成员的泛型类型?,java,generics,nested,inner-classes,type-erasure,Java,Generics,Nested,Inner Classes,Type Erasure,我很想知道为什么testinerclass无法编译,原因是: 不兼容类型:无法将对象转换为字符串 import java.util.List; 课堂测试< 我扩展了Test.InnerClass, S扩展了Test.StaticInnerClass, O扩展其他类>{ void testOtherClass(O其他){ String firstString=other.strings.get(0);//这很有效 } void testStaticInnerClass(S staticInner)

我很想知道为什么
testinerclass
无法编译,原因是:

不兼容类型:无法将对象转换为字符串

import java.util.List;
课堂测试<
我扩展了Test.InnerClass,
S扩展了Test.StaticInnerClass,
O扩展其他类>{
void testOtherClass(O其他){
String firstString=other.strings.get(0);//这很有效
}
void testStaticInnerClass(S staticInner){
String firstString=staticInner.strings.get(0);//这很有效
}
无效测试类(I内部){
String firstString=internal.strings.get(0);//此操作失败:
//“不兼容的类型:无法将对象转换为字符串”
}
静态类StaticInnerClass{
列出字符串;
}
类内部类{
列出字符串;
}
}
另一类{
列出字符串;
}

testStaticInnerClass
testOtherClass
的工作与我预期的一样,但我不确定
testInnerClass
失败的原因。

InnerClass
Test
的内部类,它需要泛型参数。 因此,您需要将类声明更新为:

类测试<
我扩展了Test.InnerClass,
S扩展了Test.StaticInnerClass,
O扩展其他类>

StaticInnerClass
,即使在
Test
内部,也被声明为
static
。因此,与每个
static
方法或变量一样,
static
类也不依赖于类的任何状态。因此,不需要进行扩展测试。基于OP最新更新的StaticInnerClass

新解决方案将是
Test
。无论如何,更多关于这个问题的信息:啊哈!感谢高瑟姆的清晰、简洁的回答。