簡體   English   中英

Java類擴展了抽象類,但必須具有靜態方法

[英]Java Class extends Abstract class but must have static method

我只是在玩創建一個程序。 我有一個抽象類Foo(實現OtherThing)和一個擴展Foo的類欄。 我計划使用其他幾個擴展Foo的類,並希望確保它們都具有Static方法。

public abstract class Foo implements OtherThing {//....}  

public class Bar extends Foo{  
  public static Map<Enum, List<AnotherEnum> getSomeThingMap(){  
    create someThingMap;  
    someThingMap.put(Enum, List<AnotherEnum>);
    return someThingMap;  
  }  
}  

我需要任何擴展Foo的類來具有此方法,以便我的Factory可以創建該類。 我可以將靜態方法手動添加到需要它的每個類中。 每個Bar類都會創建一個略有不同的Map。 我嘗試將靜態方法添加到Interface類OtherThing和Abstract類Foo中。 任何執行此操作的方法,還是我一直將此方法添加到需要的每個類中。 我知道這並不難,只是希望強制使用該方法。

我認為沒有辦法繼承靜態方法。 但這不是必須的,因為您可以直接從頂級類調用靜態方法,只需確保它們是公共的即可。

請記住:類的靜態方法不應該用於建模對象行為,靜態方法的有效用例通常是不處理基礎對象狀態的常規例程。 如果您不熟悉面向對象的設計,那么值得一看,以使您的代碼更具可維護性。

在您的用例中,如果您想從Bar中的Foo調用靜態方法,則可以僅在Bar中調用Foo.staticMethod():

public abstract class Foo implements OtherThing {//....}  

public class Bar extends Foo{  
  public static Map<Enum, List<AnotherEnum> getSomeThingMap(){  
    create someThingMap; 

    //Call your static Method from Foo here
    Foo.staticMethod()
    someThingMap.put(Enum, List<AnotherEnum>);
    return someThingMap;  
  }  
}  

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM