请考虑以下简化示例:
package com.test;
class B<S> {
B(Class<S> clazz) {}
}
class A<T> {
class SubB extends B<SubB> {
SubB() {
super(SubB.class);
}
}
}
尽管IntelliJ没有显示任何错误(通常在存在编译错误时会这样做),但启动程序实际的编译以出现错误,并且错误位于
super(SubB.class);
:
我很好奇,为什么会发生这种情况?我应该如何解决?错误:(8,23)java:不兼容的类型:
java.lang.Class<com.test.A.SubB>
无法转换为java.lang.Class<com.test.A<T>.SubB>
采用AdoptOpenJDK 11进行编译。
<T>
,它还能正常工作吗? - assyliasSubB
成为顶级类时也可以工作。我想当SubB
成为静态嵌套类时也可以工作。 - ernest_kSubB
设定为 A 的内部类吗?可以改为嵌套类吗?(static class SubB extends B<SubB>
)。 - Eran