如何静态实例化依赖于实例方法的成员?

时间:2012-02-24 07:04:28

标签: java oop inheritance static static-members

基类A有一种加载数据源的方法 各种类派生自A,包括派生类B

现在我需要在类B中拥有一个静态成员变量,例如对mStaticOfBALLB实例进行实例化mStaticOfB

这里需要注意的是,实例化静态A我需要使用基类{{1}}继承的数据源。但是我需要一个对象的实例才能得到它而我不需要在那一点上有它。

我怎样才能解决这个问题?有没有一种好的/标准的方法来处理这个问题?我想出的唯一想法(并且尽量不使用)就是这样做 B级单身。

2 个答案:

答案 0 :(得分:3)

你可以让B类具有单元化的静态mStaticOfB,当第一次调用构造函数时,iff mStaticOfB初始化。

private static FieldType mStaticOfB;
...
public B(..){

   if(mStaticOfB==null){
      //code to set   mStaticOfB
   }
}

答案 1 :(得分:3)

Nishant所说的,除了线程安全:

private static FieldType mStaticOfB;
...
public B(..) {
   super();
   synchronized(B.class) {
      if (mStaticOfB == null) {
         //code to set mStaticOfB
      }
   }
}