是否有一种方法可以将一个类定义为属于另一个文件中的类



考虑这个例子:

//OuterClass.java
class OuterClass
{
class InnerClass
{
Object parent()
{
return OuterClass.this;
}
}
}

很简单。在内部创建InnerClass (&quot有&quot的封闭实例)

现在,我的问题是,在我的情况下,OuterClass是BIG,并有多个"内部类"。因此,我想尝试将所有这些拆分为多个文件。

有没有一种方法可以告诉一个类它"属于"另一个类?比如:

//OuterClass.java
class OuterClass
{
class InnerClass definedIn InnerClass.java;
}
//InnerClass.java
class InnerClass needsEnclosingInstanceOf OuterClass
{
Object parent()
{
return OuterClass.this;
}
}

还是唯一的方法真的只是构造一个需要类实例的构造函数,并通过该对象访问类?

类和它的内部类必须在同一个Java源文件中。没有什么好办法。

我猜你可以通过某种预处理器来提供源代码,从一堆组件文件中组装真正的Java源文件。但这会引发一系列其他问题1。所以(在我看来)这是不值得追求的。

我的建议是:要么忍受大得令人讨厌的源文件,要么把它分成单独的类放在单独的文件中。


注意,内部类实际上是语法糖的一种形式。在实现层,内部类的构造函数被传递一个隐藏的额外参数,该参数是对外部类实例的引用。你可以显式地做同样的事情来获得相同的行为,而不需要类嵌套。


1 -例如,它会破坏你的IDE…除非IDE理解假定的预处理器的语法和语义。

相关内容

最新更新