Комментарии 13
обязано также иметь модификаторы static и final.
Почему просто не сократить до lazy?
второй абзац выше жёлтой рамочки
Мне кажется имелось ввиду не "разрешить lazy переменной быть нестатической и нефинальной", а "модификатор lazy вдогонок означает ещё и static и final", чтобы не писать всё вот это.
Хотя оба варианта выглядят страшновато:
private lazy static final Some instance = ...
(хотя всё явно)private lazy Some instance = ...
(хотя и покороче...)
Наверно с непривычки.
In the direction of adding more functionality, we could allow lazy fields to be non-static and/or non-final, preserving current correspondences and analogies between static and non-static field behaviors.
Всё-таки имелось в виду именно то что написано :)
И вот именно поэтому модификатор lazy не имеет смысла сокращать несколько слов, ибо именно их комбинация задаёт разные конфигурации поведения.
А может уже делать lazy на сеттеры?
По принципу, пока его никто не прочитал, не модифицируем?
По принципу, пока его никто не прочитал, не модифицируем?
Давно бы сделали инструкцию lazy на методы и переменные как в Lombok. Очень удобно.
Инициализатор ленивого статического поля может использовать любое статическое поле того же самого класса, вне зависимости от порядка, в котором они встречаются в исходнике. Обычно делать так — не самая здравая идея, поскольку при этом теряется весь смысл ленивых значений...
Вы тут одно предложение из оригинала забыли, из-за чего смысл исказился. В оригинале:
A lazy static field's initializer can refer to any static field of the same class, regardless of location in their common source file. Any non-lazy static field initializer or class initializer block may also refer to a lazy static field value, regardless of relative source order. This is usually not desirable, as it would tend to cancel the benefit of the lazy field...
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Хватит кормить логгеры! Даешь больше модификаторов! Lazy Static Final Fields. Черновой набросок фичи