Inheriting static protected inner class, javac 报错
Inheriting static protected inner class, wrong complaint by javac
考虑这段代码:
Base.java
package package1;
public class Base<I extends Base.Inner>{
protected static class Inner{}
}
Derived.java
package package2;
public class Derived extends Base<Derived.Inner>{
static class Inner extends Base.Inner{}
}
基础 class 编译没有问题。派生class的编译失败,第一个错误是
Derived.java:6: error: Inner has protected access in Base
public static class Inner extends Base.Inner{}
^
我没有看到代码中的错误。请解释一下。 JDK 1.8.0_40
能够使用 protected
Derived
Derived
Derived
class 中 Base
的内容(属性、内部 classes、方法) ] 应该与 Base
在同一个包中或者应该扩展 Base
这是 a javac bug 在版本 9 中修复的。
考虑这段代码:
Base.java
package package1;
public class Base<I extends Base.Inner>{
protected static class Inner{}
}
Derived.java
package package2;
public class Derived extends Base<Derived.Inner>{
static class Inner extends Base.Inner{}
}
基础 class 编译没有问题。派生class的编译失败,第一个错误是
Derived.java:6: error: Inner has protected access in Base
public static class Inner extends Base.Inner{}
^
我没有看到代码中的错误。请解释一下。 JDK 1.8.0_40
能够使用 protected
Derived
Derived
Derived
class 中 Base
的内容(属性、内部 classes、方法) ] 应该与 Base
在同一个包中或者应该扩展 Base
这是 a javac bug 在版本 9 中修复的。