Как я могу статически создать экземпляр члена, который зависит от метода экземпляра?
Есть базовый класс 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
}
}