2011-09-06 81 views
2

我想知道是否有可能有兩個或更多的文件爲同一類(沒有不同的類)。我想要更好地組織代碼。在Java中,同一個類可能有兩個或多個文件?

我認爲答案是「不!」,但也許,有人知道一個模糊的方式來做到這一點。

這個想法是有一個文件,它是一個名爲AnalysisConfiguration的配置GUI,另一個類在GUI和Apache Commons Configuration(從GUI設置或將配置加載到GUI)之間建立橋樑。

我認爲這兩個可以是同一個類,但我認爲代碼變得很髒,將業務配置方法與「GUI-To-File」方法混合在一起。我可以很容易地調用第二類,如AnalysisConfigurationFileBridge,但好奇心讓我搜索是否有可能將這兩個作爲同一類。

+0

這樣做你希望達到什麼目的?誠實地說,你應該考慮重構你的課堂並改進你的設計。 –

+0

即使存在這樣做的方法,但它可能是模糊的,因爲它不是更好的組織。 –

+0

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

回答

0

Java沒有編寫部分類的能力。其他一些語言,for example C#,做。此外,Java中不支持mixin,所以某些編碼模式一起變得麻煩。你可能會發現延伸另一部分的部分就足夠了。否則,您可以查看各種選項,包括字節碼操作,元編程或根據需要簡單地使用其他JVM語言。

3

答案確實不是。如果一個類的代碼太長以至於需要兩個文件才能更好地組織起來,那麼這可能是它應該被重構並分成幾個類的標誌。

+1

長類不一定意味着重構。看看Java的'String'類。這是一個很長的課程。相反,在重構期間,您應該查看諸如耦合,內聚和扇入/扇出等度量和度量。 –

+0

@Thomas:同意。在法語中,「certainement」(確實是直譯)通常實際上意味着「可能」。我認爲英語不是這樣,但我的大腦用法語思考。我編輯了我的答案。 –

1

不,不在同一個包中。 .java文件的名稱必須始終與其頂級(公共)類的名稱匹配。

0

不,但可能在同一個源文件中有多個類。您也可以使用一些預處理器,它將不同的幾個源文件合併成一個,然後將其處理爲javac,但這會增加額外的構建步驟。

喜歡的IntelliJ IDEA體面IDE會幫助你更

+0

在同一個源文件中有多個類與OP的問題沒有任何關係。 –

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

如果有類負荷太瘋狂了,它可能只是瘋了。 ;)你應該使用盡可能多的或者像你認爲最有意義的小班。

相關問題