Как я могу статически создать экземпляр члена, который зависит от метода экземпляра? - PullRequest
2 голосов
/ 24 февраля 2012

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

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

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

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

Ответы [ 2 ]

3 голосов
/ 24 февраля 2012

То, что сказал Нишант, кроме безопасных потоков:

private static FieldType mStaticOfB;
...
public B(..) {
   super();
   synchronized(B.class) {
      if (mStaticOfB == null) {
         //code to set mStaticOfB
      }
   }
}
3 голосов
/ 24 февраля 2012

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

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

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