Java - 其他文件中的嵌套类

CLO*_*VIS 5 java oop inner-classes

我有类似的东西:

class Outer {
  // a lot of code...
  class Inner {
    // a lot of code...
  }
}
Run Code Online (Sandbox Code Playgroud)

这正是我想要的技术方式(我确实希望 Inner 是一个嵌套的非静态类)。文件很长,我在这个项目中经常使用这样的模式。为了提高可读性,我想将 Outer 类和 Inner 类放在各自的文件中——但我应该将它们保留为“Inner”和“Outer”(即,Inner 类作为对Outer 类,可以访问任何字段,包括私有字段)。

我想到的一个解决方案是放置一个嵌套接口并将其继承到另一个文件中。然而,基于这个问题,嵌套接口似乎只能是静态的。

另请注意,此问题不是此问题的重复:“将嵌套类放在单独的文件中”,因为该问题旨在使嵌套类取消嵌套。我希望内部类仍然是内部类,只是在另一个文件中。

这个问题是关于抽象内部类的,但没有指定该抽象类的子类是否也被 JVM 视为内部类。

这可能吗 ?如果是这样,我该怎么做?

Mic*_*ers 2

据我所知,没有办法在单独的文件中拥有一个内部类并让它保持其特权位置。Java 没有 #include 类型语法。Java 期望单个类“拥有”一个 .java 文件,在本例中是您的外部类。您无法从任何其他 .java 文件直接访问外部类的内部私有或局部变量。

最好的选择可能是将内部类的一部分移动到它自己的类中,使其抽象,并尽可能多地将逻辑移入其中。创建一个新的内部类并让它扩展新的独立类,并让内部类实现任何需要访问外部类内部(您将无法从外部访问)的内容。