有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java我应该使用静态初始值设定项还是超级类

我有一个名为Parser的接口。两个类ParserA, ParserB实现了Parser

public interface Parser{
     public void initialize();
     public int Parse(byte[] data);
}

我对初始化感到困惑ParserA初始化两个MapsParserB初始化两个Maps。但数据不同Maps用常量数据初始化。意味着不是从运行时开始

那么我应该使用approach 1还是approach 2呢

方法1:

class Initializer{
  //have two maps as member
}

Class ParserA extents initializer implements Parser{
       public int Parse(byte[] data){

       }

       public void initialize(){
         //Initialize those maps
       }
}

Similarly for class B

方法2:

class Constants{
   //Static initializer of four maps[two for ParserA, two for ParserB]
}

Class ParserA implements Parser{
       public int Parse(byte[] data){

       }

       public void initialize(){
          //Constants.map1 likewise use.
       }
}

Similarly for class B

在上述用例中,哪个是首选的

Q2:我在类^{中有另一个实用方法。让它成为getAttr,它利用了这两个映射。在这种情况下,哪种方法更好

Q3如果我想要multiple threads to use these parsers并且假设我选择了方法1,那么每个线程上都会发生不必要的初始化。这才是真正让我困惑的地方

我有点困惑

假设AnimalTiger, Lion的基类。每只动物都有age, numOfLegs作为成员。有Animal类而不是在每个动物类中有age, numOfLegs类是有意义的。所以Superclass在这里获胜。不是吗?如果是这样的话,我的场景也与我假设的类似


共 (0) 个答案