我有一个类MyClass
和一个内部类MyNestedClass
如下所示:
public class MyClass {
...
public class MyNestedClass {
...
}
}
这两个类都很长。正因为如此,我想将它们分开放在两个不同的文件中,而不破坏层次结构。这是因为使用MyClass的程序员不应该看到嵌套的类。
有没有办法做到这一点?
发布于 2011-06-03 02:41:25
您可以将内部类包设置为私有,这意味着它只能从完全相同的包中的其他类访问。对于像java.lang
或java.util
这样的标准JDK包中的隐藏类,这也是相当频繁的。
在pkg/MyClass.java中
public class MyClass {
...
}
在pkg/MyHiddenClass.java中
class MyHiddenClass {
final MyClass outer;
MyHiddenClass( MyClass outer )
{
this.outer = outer;
}
...
}
现在,当您想要访问外部类的方法或变量时,您需要在它们前面加上outer.
前缀,但是当编译器综合创建对外部实例的引用时,您将获得与以前相同的功能。
发布于 2011-06-03 02:31:46
不是的。Java源代码不能拆分到多个文件中。您需要一个类似于C#中的分部类的结构,这是Java所没有的。
发布于 2011-06-03 04:33:34
我认为你有一个上帝对象或类似的东西,在重构你的代码时考虑一下
http://en.wikipedia.org/wiki/God_object
https://stackoverflow.com/questions/6218722
复制相似问题