List<String> list = new ArrayList<>();
list.add("1");
list.add("2");
list.add("3");
for (String str : list) {
if (str.equals("2")) {
list.remove(str);
}
}
System.out.println(list);Что произойдёт, если запустить код выше?
Final Results
66%
ConcurrentModificationException
34%
Будет выведено [1, 3]
Многие проголосовали за первый вариант, справедливо полагая, что удаление из ArrayList во время итерирования должно выбрасывать исключение. Но в данном случае ConcurrentModificationException не выбрасывается из-за бага. Такой баг проявляется, только если удалять предпоследний элемент. Кстати, баг чинить не будут.
Ух ты,
--illegal-access=deny будет по умолчанию в Java 16. Так сказал Марк Рейнолд на конференции JFokus. Это значит, что любителям setAccessible(true) придётся включать ключик, чтобы их программа продолжала работать.Twitter
Nicolai Parlog
Yes! @mreinhold says illegal access will be denied by default in #Java16. Great move. https://t.co/gdpXRj6viX
Ребята, Helpful NullPointerExceptions в Java 14 – пушка! Включаются ключом
-XX:+ShowCodeDetailsInExceptionMessagesПоявился новый черновик JEP для
Но пока, похоже, это будет работать только для записей. В любом случае, хорошо, что всё по-маленьку движется в сторону полноценного паттерн-матчинга.
instanceof. Разница со старым – добавили deconstruction patterns:record Point(int x, int y) {}
if (obj instanceof Point(var a, var b)) {
System.out.println(a+b);
}Но пока, похоже, это будет работать только для записей. В любом случае, хорошо, что всё по-маленьку движется в сторону полноценного паттерн-матчинга.
Не знаю как вам, а мне идея нравится! Добавить в язык стандартную аннотацию
@Language, чтобы можно было указывать тип языка в блоках текста. Представляете, писать какой-нибудь SQL прямо внутри литерала, а там будет автокомплит, подсветка, валидация...Тут меня справедливо поправили, что всё это в IntelliJ IDEA уже давно есть. И даже есть аннотация @Language. Правда она нестандартная. Но ещё можно использовать комментарий
//language=<language_ID>, если не хочется тащить библиотеку ради аннотации.Тут люди обсуждают, как бы упростить синтаксис
if (!(x instanceof String y)), а Тагир просто взял и реализовал это в IDEA безо всяких изменений языка. Удивительно, что до такой простейшей вещи не додумались раньше.Twitter
Tagir Valeev
Implemented very small but nice addition to completion: if you complete `instanceof` after negation the parentheses will be inserted automatically. Of course, it could be used with pattern instanceof as well. Will be available since #IntelliJIDEA 2020.1.…
Сколько вам лет?
Final Results
1%
<18
3%
18-20
8%
21-23
14%
24-26
16%
27-29
20%
30-32
15%
33-35
13%
36-38
3%
39-41
7%
>41
Может, немного поздновато, но на всякий случай информирую, что на YouTube появились видео докладов с Joker 2019.
#joker
#joker
Будет ли вам интересно, если я сюда буду кидать ссылки на интересные доклады? Вот, например, доклад Тагира Валеева про трансляцию switch в байт-код. Мне кажется, у него незаслуженно мало просмотров, хотя доклад очень познавательный и полезный.
YouTube
Тагир Валеев – Трансляция switch в Java-байткод
Мы посмотрим каким образом компилятор javac транслирует в Java-байткод различные версии оператора switch начиная с Java 1 и вплоть до Java 12, какие нетривиальные проблемы при этом возникают и как они отважно решаются. Доклад предназначен для тех, кому интересно…
Похоже, в скором будущем ZGC станет production ready. Появился новый черновик JEP.
Похоже, Nashorn (движок JS) скоро уберут из JDK. Он стал deprecated в Java 11, а теперь его хотят выбросить совсем. Причина очень банальная: никто не изъявил желание его поддерживать.
Таким образом, они хотят убрать единственный движок JS из JDK, и все приложения, использующие JS, перестанут работать. И знаете что? Я даже не удивлюсь, если они реально возьмут и сделают это. Вспомните, например, как просто выкосили Java EE в Java 11. А чем JS лучше?
Таким образом, они хотят убрать единственный движок JS из JDK, и все приложения, использующие JS, перестанут работать. И знаете что? Я даже не удивлюсь, если они реально возьмут и сделают это. Вспомните, например, как просто выкосили Java EE в Java 11. А чем JS лучше?
А вы используете Nashorn или любой другой JavaScript движок в Java (Rhino, Graal.js...)?
Anonymous Poll
14%
Да
86%
Нет
Вчера на конференции SnowOne узнал об очень интересной библиотеке, которая позволяет использовать синтаксис Java 9-14 и компилировать его в Java 8. Библиотека называется Jabel и создана нашим соотечественником Сергеем Егоровым. Поддерживается всё кроме рекордов (их поддержка запланирована на ближайшее будущее). По сути Jabel это агент, который инструментирует пару классов в компиляторе javac и заставляет его "думать", что все фичи выше 9+ относятся к 8-й версии. И всё. Весь код плагина занимает всего около 150 строк! Плагин хорошо работает в Идее. Если ещё включить нужную инспекцию, то можно также обезопасить себя от использования API, которое появилось позже Java 8 (например, StackWalker).
GitHub
GitHub - bsideup/jabel: Jabel - unlock Javac 9+ syntax when targeting Java 8
Jabel - unlock Javac 9+ syntax when targeting Java 8 - bsideup/jabel
Интересный паззлер от Стюарта Маркса
1. Ответ ищите в реплаях.
2. Ещё одна причина не использовать внутренние именованные классы.
1. Ответ ищите в реплаях.
2. Ещё одна причина не использовать внутренние именованные классы.
Twitter
Stuart Marks
BETTER QUIZ: (Fixed typo.) Here's a little Java puzzle I ran across today. What's the fix for this error? class Outer { class Inner { Inner[] array = new Inner[0]; // ^ error: generic array creation } }
Кому-нибудь нужен JetBrains All Products Pack на 3 месяца? Есть лишний купон, не знаю куда деть. Напишите мне, если кому-то нужно.
Купон ушёл
Купон ушёл
Ух ты, срач Баруха и Тагира в Твиттере! К сожалению, не про Java, а про коронавирус 🦠.
Начало
Продолжение
Начало
Продолжение
Twitter
JBaruch 🎩 confused-travolta.gif 🤷♂️
Почему нельзя? Можно. Допускаю мысль, что в России меры по массовому заражению принимаются лучше, чем в Штатах. https://t.co/PBUZPsAsDi