Alp*_*Alp 35 java file external nested-class
我有一个类MyClass和一个MyNestedClass像这样的内部类:
public class MyClass {
...
public class MyNestedClass {
...
}
}
Run Code Online (Sandbox Code Playgroud)
这两节课都很长.因此,我想将它们分成两个不同的文件,而不会破坏层次结构.这是因为使用MyClass的程序员不应该看到嵌套类.
有没有办法实现这一目标?
x4u*_*x4u 21
您可以将内部类包设为私有,这意味着只能从完全相同的包中的其他类访问它.对于像java.lang或等标准JDK包中的隐藏类,这也经常发生java.util.
在pkg/MyClass.java中
public class MyClass {
...
}
Run Code Online (Sandbox Code Playgroud)
在pkg/MyHiddenClass.java中
class MyHiddenClass {
final MyClass outer;
MyHiddenClass( MyClass outer )
{
this.outer = outer;
}
...
}
Run Code Online (Sandbox Code Playgroud)
现在,当您想要访问外部类的方法或变量时,您需要为它们添加前缀,outer.但是当您对外部实例的引用由编译器进行综合创建时,您将获得与之前基本相同的功能.
对象内部类保持到了括号类的对象含蓄地提及.如果嵌套类不是static(它是内部的)你不能.但是如果嵌套类不需要直接访问父类的实例并且不需要访问私有字段,那么重构就好了,将内部类移出并且不要将其声明为public(在该包之外不能被访问).
| 归档时间: |
|
| 查看次数: |
14149 次 |
| 最近记录: |