如何从另一个包访问受保护的内部类



如何访问内部类"内部";在";文件1";包装中的";秘密";从";文件2";包装中的";测试";。这是它的代码:

package secret;
public class file1 {
protected class Inner {
public int x = 8;
}
}
package test;
import secret.file1;
public class file2 {
public static void main(String[] args) {
// code
}
}

我知道这个主题也有类似的问题(如何访问包外受保护的内部类?(,但我似乎不明白答案。以下是我迄今为止所尝试的(从阅读答案开始(:

第一次尝试:

public class file2 extends file1 {
public static void main(String[] args) {
file1 outer = new file1();
file1.Inner inner = outer.new Inner();
}
}

第二次尝试:

public class file2 extends file1 {
public static class file3 extends file1.Inner {
public static void main(String[] args) {
file1 outer = new file1();
file1.Inner inner = outer.new Inner();
}
}
}

尝试3:

public class file2 extends file1 {
public static class file3 extends file1.Inner {
public static void main(String[] args) {
file2 outer = new file2();
file2.file3 outerinner = outer.new file3();
file2.file3.Inner inner = outerinner.new Inner();
}
}
}

我似乎肯定错过了什么,引导我朝着正确的方向前进将是非常重要的。

使用第三类有一个解决方法:

package secret;
public class file3 extends file1 {
public Inner createInner(){
return new Inner();
}
}

那么简单地说:

public class file2 extends file1 {
public static void main(String[] args) {
file3 outer = new file3();
file1.Inner inner = outer.createInner();
}
}

检查类层次结构设计是否无法简化。主要关注内部嵌套类和静态嵌套类之间的差异。或者想出这样的文件1 x=new inner((;

最新更新