Ponieważ pracuję na serwerze bez absolutnie żadnego nietrwałego stanu dla użytkowników, każdy obiekt związany z użytkownikiem jest wdrażany przy każdym żądaniu.
W rezultacie często robię leniwe inicjowanie właściwości obiektów, które mogą pozostać nieużywane.
protected EventDispatcher dispatcher = new EventDispatcher();
Staje się...
protected EventDispatcher<EventMessage> dispatcher;
public EventDispatcher<EventMessage> getEventDispatcher() {
if (dispatcher == null) {
dispatcher = new EventDispatcher<EventMessage>();
}
return dispatcher;
}
Czy jest jakiś powód, dla którego nie można tego wbudować w Javę?
protected lazy EventDispatcher dispatcher = new EventDispatcher();
Jak wspomniano poniżej w komentarzach, zdaję sobie sprawę, że język może ewoluować teoretycznie i obejmować wszystko, co tylko chcesz. Szukam praktycznego pomiaru możliwości. Czy to koliduje z innymi funkcjami? Czy implementacja jest wystarczająco prosta, aby działała dobrze z istniejącą maszyną JVM? A nawet, czy to dobry pomysł?
synchronized
słowo kluczowe działałoby tak samo, jakby było w metodzie. Wyobrażam sobie, że byłoby miejsce na bardziej skomplikowane metody budowy. W moim konkretnym przypadku użycia, ze względu na charakter problemu, przy każdym żądaniu, ponieważ jest to jego własny świat, synchronizacja jest bezcelowa.