在Java中,同一个类可能有两个或更多文件?

时间:2011-09-06 19:38:04

标签: java class

我想知道是否可能有两个或更多文件用于同一个类(不是不同的类)。我希望这能更好地组织代码。

我认为答案是“不!”,但也许,有人知道这样做的模糊方法。

我们的想法是拥有一个名为AnalysisConfiguration的配置GUI文件和另一个在GUI和Apache Commons Configuration之间建立桥梁的类(从GUI设置或将配置加载到GUI)。

我认为这两个可以是同一个类,但我认为代码变得很脏,将业务配置方法与“GUI-To-File”方法混合在一起。我可以轻松地将第二类称为AnalysisConfigurationFileBridge,但好奇心告诉我搜索是否可能将两者作为同一类。

6 个答案:

答案 0 :(得分:3)

答案确实没有。如果一个类的代码太长,以至于需要更好地组织两个文件,那么可能是它应该被重构并分成几个类的标志。

答案 1 :(得分:1)

不,不在同一个包装中。 .java文件的名称必须始终与其顶级(公共)类的名称相匹配。

答案 2 :(得分:1)

您可以使用AspectJ的类型间声明将一些实现放在一个方面的j文件中,其余的放在java文件中,并在编译时将它们神奇地结合起来。

我知道Spring Roo将此用于getter和setter,这个想法是从.java文件中获取该样板代码使其更清晰。

请参阅http://www.eclipse.org/aspectj/doc/released/progguide/language-interType.html

答案 3 :(得分:0)

不,但可以在同一个源文件中有多个类。您还可以使用一些预处理器,它会将不同的几个源文件连接成一个,然后再将其处理为javac,但这会增加额外的构建步骤。

像IntelliJ IDEA这样的体面IDE可以帮助你更多

答案 4 :(得分:0)

Java无法编写部分类。其他一些语言for example C#也可以。此外,Java中不支持mixin,因此某些编码模式一起变得很麻烦。您可能会发现扩展另一部分的一部分就足够了。否则,您可以查看各种选项,包括字节码操作,元编程或根据需要使用其他JVM语言。

答案 5 :(得分:0)

你可以做的是有几个抽象类作为父母。你可以

abstract class A {
    // some methods and fields.
}

abstract class B extends A {
    // some more methods and fields.
}

class C extends B {
    // some more methods and fields.
}

如果有很多课程似乎很疯狂,那可能就是疯了。 ;)你应该使用你认为最有意义的课程。