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

问题描述:

我想知道是否有可能有两个或更多的文件为同一类(没有不同的类)。我想要更好地组织代码。在Java中,同一个类可能有两个或多个文件?

我认为答案是“不!”,但也许,有人知道一个模糊的方式来做到这一点。

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

我认为这两个可以是同一个类,但我认为代码变得很脏,将业务配置方法与“GUI-To-File”方法混合在一起。我可以很容易地调用第二类,如AnalysisConfigurationFileBridge,但好奇心让我搜索是否有可能将这两个作为同一类。

+0

这样做你希望达到什么目的?诚实地说,你应该考虑重构你的课堂并改进你的设计。 –

+0

即使存在这样做的方法,但它可能是模糊的,因为它不是更好的组织。 –

+0

可能的重复http://*.com/questions/2764234/partial-classes-partial-class-file? –

Java没有编写部分类的能力。其他一些语言,for example C#,做。此外,Java中不支持mixin,所以某些编码模式一起变得麻烦。你可能会发现延伸另一部分的部分就足够了。否则,您可以查看各种选项,包括字节码操作,元编程或根据需要简单地使用其他JVM语言。

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

+1

长类不一定意味着重构。看看Java的'String'类。这是一个很长的课程。相反,在重构期间,您应该查看诸如耦合,内聚和扇入/扇出等度量和度量。 –

+0

@Thomas:同意。在法语中,“certainement”(确实是直译)通常实际上意味着“可能”。我认为英语不是这样,但我的大脑用法语思考。我编辑了我的答案。 –

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

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

喜欢的IntelliJ IDEA体面IDE会帮助你更

+0

在同一个源文件中有多个类与OP的问题没有任何关系。 –

您可以使用AspectJ的类型间声明把一方面Ĵ文件中的一些执行情况和你的java文件中的休息,让他们奇迹般地在编译时结合。

我知道Spring Roo将它用于getter和setter,其想法是将.java文件中的样板代码变得更清晰。

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

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

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. 
} 

如果有类负荷太疯狂了,它可能只是疯了。 ;)你应该使用尽可能多的或者像你认为最有意义的小班。