Как я могу статически создать экземпляр члена, который зависит от метода экземпляра?

Есть базовый класс A у которого есть метод для загрузки источника данных.
Различные классы являются производными от A в том числе производный класс B,

Теперь мне нужно иметь статическую переменную-член в классе B например mStaticOfB это создается только один раз для ALL экземпляры класса B использовать.

Предостережение заключается в том, что для создания статического mStaticOfB Мне нужно использовать источник данных, унаследованный базовым классом A.Но мне нужен экземпляр объекта, чтобы получить это, и у меня его нет в тот момент.

Как я могу обойти эту проблему? Есть ли хороший / стандартный способ справиться с этим? Единственная идея, которую я придумал (и пытался не использовать), - сделать класс B синглтоном.

2 ответа

Решение

Что сказал Нишант, кроме поточно-безопасного

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

Вы могли бы просто иметь класс B с унитизированным статическим mStaticOfB, который инициализируется, если mStaticOfB время, когда в первый раз вызывается конструктор.

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

   if(mStaticOfB==null){
      //code to set   mStaticOfB
   }
}
Другие вопросы по тегам