提问者:小点点

Java类扩展抽象类,但必须具有静态方法


我只是在创建一个程序。我有一个抽象类Foo(实现了其他东西)和一个扩展Foo的类栏。我计划有几个其他扩展Foo的类,并希望确保它们都有静态方法。

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的类都有这个方法,以便我的创建类的工厂能够工作。我可以手动将静态方法添加到需要它的每个类中。每个Bar类都会创建一个稍微不同的Map。我尝试将静态方法添加到Interface类“其他东西”和“抽象”类“Foo”中。任何方法都可以做到这一点,或者我坚持将此方法添加到我需要的每个类中。我知道这并不难,只是更愿意强制使用此方法。


共1个答案

匿名用户

我认为没有办法继承静态方法。但应该没有必要,因为你可以直接从你的顶级类调用静态方法,只要确保它们是公共的。

请记住:类的静态方法不应该用于建模对象行为,静态方法的有效用例通常是不操作底层对象状态的例程。如果您不熟悉面向对象的设计,值得一看,以使您的代码更易于维护。

如果你想在Bar中从Foo调用静态方法,你可以在Bar中调用Foo. st杀人法():

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