在Java中,同一个类可能有两个或多个文件?
我想知道是否有可能有两个或更多的文件为同一类(没有不同的类)。我想要更好地组织代码。在Java中,同一个类可能有两个或多个文件?
我认为答案是“不!”,但也许,有人知道一个模糊的方式来做到这一点。
这个想法是有一个文件,它是一个名为AnalysisConfiguration
的配置GUI,另一个类在GUI和Apache Commons Configuration(从GUI设置或将配置加载到GUI)之间建立桥梁。
我认为这两个可以是同一个类,但我认为代码变得很脏,将业务配置方法与“GUI-To-File”方法混合在一起。我可以很容易地调用第二类,如AnalysisConfigurationFileBridge
,但好奇心让我搜索是否有可能将这两个作为同一类。
Java没有编写部分类的能力。其他一些语言,for example C#,做。此外,Java中不支持mixin,所以某些编码模式一起变得麻烦。你可能会发现延伸另一部分的部分就足够了。否则,您可以查看各种选项,包括字节码操作,元编程或根据需要简单地使用其他JVM语言。
答案确实不是。如果一个类的代码太长以至于需要两个文件才能更好地组织起来,那么这可能是它应该被重构并分成几个类的标志。
长类不一定意味着重构。看看Java的'String'类。这是一个很长的课程。相反,在重构期间,您应该查看诸如耦合,内聚和扇入/扇出等度量和度量。 –
@Thomas:同意。在法语中,“certainement”(确实是直译)通常实际上意味着“可能”。我认为英语不是这样,但我的大脑用法语思考。我编辑了我的答案。 –
不,不在同一个包中。 .java
文件的名称必须始终与其*(公共)类的名称匹配。
不,但可能在同一个源文件中有多个类。您也可以使用一些预处理器,它将不同的几个源文件合并成一个,然后将其处理为javac,但这会增加额外的构建步骤。
喜欢的IntelliJ IDEA体面IDE会帮助你更
在同一个源文件中有多个类与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.
}
如果有类负荷太疯狂了,它可能只是疯了。 ;)你应该使用尽可能多的或者像你认为最有意义的小班。
这样做你希望达到什么目的?诚实地说,你应该考虑重构你的课堂并改进你的设计。 –
即使存在这样做的方法,但它可能是模糊的,因为它不是更好的组织。 –
可能的重复http://*.com/questions/2764234/partial-classes-partial-class-file? –