Оскільки я працюю на сервері з абсолютно відсутнім станом для користувачів, кожен об’єкт, пов’язаний з користувачем, розгортається на кожен запит.
Отже, я часто виявляю ледачу ініціалізацію властивостей об'єктів, які можуть залишатися невикористаними.
protected EventDispatcher dispatcher = new EventDispatcher();
Стає ...
protected EventDispatcher<EventMessage> dispatcher;
public EventDispatcher<EventMessage> getEventDispatcher() {
if (dispatcher == null) {
dispatcher = new EventDispatcher<EventMessage>();
}
return dispatcher;
}
Чи є якась причина, що цього не вдалося вбудувати в Java?
protected lazy EventDispatcher dispatcher = new EventDispatcher();
Як зазначено нижче в коментарях, я розумію, що мова теоретично може розвиватися, щоб включати в себе все, що завгодно. Я шукаю практичне вимірювання можливості. Чи буде це конфлікт з іншими особливостями? Чи реалізація є достатньо простою для того, щоб добре працювати з JVM, як вона існує? І навіть, це гарна ідея?
synchronized
ключове слово працюватиме так само, як якщо б воно було за методом. Я гадаю, було б розміщення складніших методів будівництва. У моєму конкретному випадку використання, в силу природи проблеми, при кожному запиті як власному світі синхронізуватись безглуздо.