Как стать автором
Обновить

Комментарии 13

обязано также иметь модификаторы static и final.

Почему просто не сократить до lazy?
второй абзац выше жёлтой рамочки

Мне кажется имелось ввиду не "разрешить lazy переменной быть нестатической и нефинальной", а "модификатор lazy вдогонок означает ещё и static и final", чтобы не писать всё вот это.


Хотя оба варианта выглядят страшновато:


  1. private lazy static final Some instance = ... (хотя всё явно)
  2. 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...
НЛО прилетело и опубликовало эту надпись здесь

представь, что у тебя есть кусок кода, который считает количество скачанных торрентов в домашней директории и возвращает boolean isPirate :-) И нужен этот класс раз в год, на День Торрента, когда всем настоящим пиратам выдают чёрные треуголки.

НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Зарегистрируйтесь на Хабре, чтобы оставить комментарий