Комментарии 18
Неплохо!
Двойные скобки понравились. Интересно, с их помощью можно выстрелить себе в чью-то чужую ногу?
Очень просто.
repo.save(new Entity() {{… }});
В случае с Hibernate, этот код выдаст рантайм ошибку Entity not found.
Очень плохой дизайн у фичи, которая вроде бы не должна иметь сайд-эффектов, а на деле даёт трудно уловимые и непонятные ошибки, из-за того что создаются непонятные анонимные классы. В этом смысле c# намного более предсказуем.
Пункт 3, на самом деле, должен быть пунктом 2.
Это создание нового анонимного класса-наследника, например, ArrayList
, с добавлением в него инициализатора. Вернее, оно всё равно пойдёт в <init>
. :)
Кроме того, что сказал itblogger, думаю, можно выстрелить себе в свою ногу, если создать слишком много анонимных классов, которые засорят Metaspace и замедлят компиляцию и запуск программы.
В любом случае, новые Set.of()
и Map.ofEntries
, имхо, лучше читаются и не имеют возможных разрушительных последействий. Ну, кроме того, что могут внезапно швырнуть UnsupportedOperationException
при попытке изменить неизменяемую коллекцию. :D
Не пользуйтесь этим ужасом. Забудьте как страшный сон.
Ты бы сразу пояснил, чего с ним не так
Выше написали же. В целом это абьюз фичи. Фичи следует использовать по назначению.
public interface Main {
public static void main(String ... args) {
:
:
}
}
5 скрытых cекретов в Java