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

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

НЛО прилетело и опубликовало эту надпись здесь
Когда открываются Гробницы времени оттуда обычно появляется Шрайк:-)
Вопрос на не техническую часть собеседования: «Вам пришлось искать и чинить баг причиной которого был исполняемый коммент аналогичный пункту №4 статьи, ваши следующие действия?»

Выяснить, каким кодогенератором пользовался автор исходной версии.

Уточняющий вопрос — «допустимо ли физическое насилие в нашей компании в крайне особых случаях?»
Пункт №3 делает Java еще больше похожей на C#…
«Скрытые секреты» — плеоназм.

Двойные скобки понравились. Интересно, с их помощью можно выстрелить себе в чью-то чужую ногу?

Очень просто.
repo.save(new Entity() {{… }});
В случае с Hibernate, этот код выдаст рантайм ошибку Entity not found.
Очень плохой дизайн у фичи, которая вроде бы не должна иметь сайд-эффектов, а на деле даёт трудно уловимые и непонятные ошибки, из-за того что создаются непонятные анонимные классы. В этом смысле c# намного более предсказуем.

Пункт 3, на самом деле, должен быть пунктом 2.
Это создание нового анонимного класса-наследника, например, ArrayList, с добавлением в него инициализатора. Вернее, оно всё равно пойдёт в <init>. :)


Кроме того, что сказал itblogger, думаю, можно выстрелить себе в свою ногу, если создать слишком много анонимных классов, которые засорят Metaspace и замедлят компиляцию и запуск программы.


В любом случае, новые Set.of() и Map.ofEntries, имхо, лучше читаются и не имеют возможных разрушительных последействий. Ну, кроме того, что могут внезапно швырнуть UnsupportedOperationException при попытке изменить неизменяемую коллекцию. :D

Это очень ужасная вещь, так как оно генерирует иннер класс, который к тому-же захватывает в себя локальные переменные. Это даже может привести к утечкам памяти.
НЛО прилетело и опубликовало эту надпись здесь
Спасибо за инициализатор с двойными фигурными скобками! Неожиданно и удобно, на первый взгляд))

Не пользуйтесь этим ужасом. Забудьте как страшный сон.

Ты бы сразу пояснил, чего с ним не так

Выше написали же. В целом это абьюз фичи. Фичи следует использовать по назначению.

6-е место Метод main в интерфейсе.
    public interface Main {
        public static void main(String ... args) {
            :
            :
        }
    }
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации