№ Пункт конечного поля состоит в том, что он установлен один раз, во время строительства и никогда не будет меняться после этого. Как компилятор или виртуальная машина знают что-нибудь полезное о conn
в вашем случае? Как он узнает, что только это свойство должно иметь возможность установить его, а не какой-либо другой метод?
Возможно, если вы объясните, какова вам семантика, мы можем придумать альтернативу. Возможно, у вас может быть интерфейс «поставщик», представляющий способ получения значения, а затем MemoizingProvider
, который проксирует другой поставщик, но только один раз, кэшируя значение в противном случае. Это также не могло бы иметь конечное поле для кэшированного значения, но, по крайней мере, оно было бы только в одном месте.
Я думаю, окончательный модификаторов в «подключ» поле опечатка, верно? – Nicolas
Вы должны пометить контакт как неустойчивый. Двойной проверенный замок разбит без него, и даже с изменчивым он сломан для java 1.4 и ранее – jassuncao