外部文件中的嵌套/内部类

2022-09-01 01:08:26

我有一个类和一个内部类,如下所示:MyClassMyNestedClass

public class MyClass {
  ...
  public class MyNestedClass {
    ...
  }
}

这两个类都很长。因此,我想将它们分成两个不同的文件,而不会破坏层次结构。这是因为嵌套类对使用 MyClass 的程序员不可见。

有没有办法实现这一目标?


答案 1

您可以将内部类包设为私有,这意味着只能从完全相同的包中的其他类访问它。对于标准 JDK 包(如 或 )中的隐藏类,也经常这样做。java.langjava.util

在 pkg/MyClass 中.java

public class MyClass {
  ...
}

在 pkg/MyHiddenClass 中.java

class MyHiddenClass {

  final MyClass outer;

  MyHiddenClass( MyClass outer )
  {
      this.outer = outer;
  }
  ...
}

现在,当您想要访问外部类的方法或变量时,您需要为它们添加前缀,但是当您由编译器综合创建对外部实例的引用时,您基本上可以获得与以前相同的功能。outer.


答案 2

不。Java源代码不能拆分到多个文件中。你需要一个类似于C#中的分部类的构造,而Java没有。