Как позвать protected метод у класса в чужом пакете? Ловите простой трюк. Просто переопределяем метод в анонимном классе, и сразу же вызываем его на этом объекте:
new ClassWithProtectedMethod() {
@Override
protected void method() {
super.method();
}
}.method();
Заметьте, что метод даже не пришлось делать public.В Java 16 появится метод
Кроме того, между всеми тремя способами есть различия:
•
•
•
#java16 #stream
Stream.toList(), который позволит конвертировать Stream в список. Сейчас это можно сделать с помощью Stream.collect(Collectors.toList()) и Stream.collect(Collectors.toUnmodifiableList()), однако toList() будет не только короче, но и эффективнее, поскольку не будет создавать никаких промежуточных массивов.Кроме того, между всеми тремя способами есть различия:
•
collect(Collectors.toList()) не гарантирует неизменяемость, позволяет нули (по факту возвращает ArrayList)•
collect(Collectors.toUnmodifiableList()) гарантирует неизменяемость, не позволяет нули•
toList() гарантирует неизменяемость, позволяет нули (по факту возвращает неизменяемый список)#java16 #stream
В сборщике мусора Shenandoah появится конкурентная обработка слабых ссылок (в т.ч. финализаторов). Это значит, что теперь использование слабых ссылок и finalize() не будет влиять на паузы GC. Изменение попадёт в Java 16.
#shenandoah #java16
#shenandoah #java16
This media is not supported in your browser
VIEW IN TELEGRAM
Когда проверяешь, как там поживает твой билд, и радуешься, что пока не упало ни одного теста
#юмор
#юмор
microJUG
https://youtu.be/NXh98XRi2is #ТагирВалеев
JUG. ru выложил остатки видео с JPoint 2020.
Пишите в комментах, какие доклады стоит посмотреть.
#jpoint
Пишите в комментах, какие доклады стоит посмотреть.
#jpoint
YouTube
JPoint 2020: открытый плейлист
Enjoy the videos and music you love, upload original content, and share it all with friends, family, and the world on YouTube.
Ух ты, в IntelliJ IDEA появился встроенный калькулятор
#IntelliJIDEA
#IntelliJIDEA
Ахах, Тагир научно доказывает, почему у Путина всё-таки два разных кабинета))
Twitter
Tagir Valeev
Любопытно, что в реплаях многие утверждают, будто подобное изменение картинки возможно, при изменении ракурса съёмки. Вот вам азов геометрии тред. https://t.co/AEW1wKlcI0
Какую сборку JDK вы используете? (можно отмечать несколько)
#опрос
#опрос
Final Results
25%
Oracle JDK (oracle.com)
42%
Oracle OpenJDK (jdk.java.net)
33%
AdoptOpenJDK (adoptopenjdk.net)
2%
Debian OpenJDK (debian.org)
14%
Liberica JDK (bell-sw.com)
6%
Red Hat OpenJDK (redhat.com)
10%
Azul Zulu (azul.com)
2%
IBM J9 / OpenJ9 (ibm.com)
6%
Amazon Corretto (amazon.com)
3%
Другое (напишу в комментах)
microJUG
В Java 16 появится метод Stream.toList(), который позволит конвертировать Stream в список. Сейчас это можно сделать с помощью Stream.collect(Collectors.toList()) и Stream.collect(Collectors.toUnmodifiableList()), однако toList() будет не только короче, но…
Метод
Stream.toList() позволит создавать неизменяемые списки с нулями, причём весьма компактно:List<Integer> list = Stream.of(1, 2, null).toList();#java16
Новость месячной давности, но всё же. Microsoft (совместно с Azul) выпустил первый EA билд порта OpenJDK под Apple M1. Да-да, Microsoft. Под Apple.
На вопрос, зачем им это нужно, продуктовый менеджер сказал, что многие разработчики в Microsoft работают на маках, и скоро они будут обновляться на новые макбуки 😄.
#microsoft #applem1
На вопрос, зачем им это нужно, продуктовый менеджер сказал, что многие разработчики в Microsoft работают на маках, и скоро они будут обновляться на новые макбуки 😄.
#microsoft #applem1
Если вы вдруг пропустили, то неделю назад JUG.ru выложил два видео с Joker 2020:
https://youtu.be/Ho2KDy-yI7U
https://youtu.be/GL1txFxswHA
#joker
https://youtu.be/Ho2KDy-yI7U
https://youtu.be/GL1txFxswHA
#joker
YouTube
Тагир Валеев — Заменят ли роботы программистов?
Подробнее о Java-конференциях:
— весной — JPoint: https://jrg.su/gTrwHx
— осенью — Joker: https://jrg.su/h7yvG4
— —
. . . Одна из основных целей программиста — автоматизировать ручной труд. Из-за программистов уже во многих областях существенно сократилось…
— весной — JPoint: https://jrg.su/gTrwHx
— осенью — Joker: https://jrg.su/h7yvG4
— —
. . . Одна из основных целей программиста — автоматизировать ручной труд. Из-за программистов уже во многих областях существенно сократилось…
Удивительно, насколько близки наши с Tonsky взгляды относительно контейнеров, Gradle и всей этой прочей херни. Даже немного удивлён.
Gradle это худшее, что случилось с джавой за всю её историю, на мой взгляд.
Gradle это худшее, что случилось с джавой за всю её историю, на мой взгляд.
Forwarded from Стой под стрелой
Стоит конечно признаться, я избалован Java. Казалось бы, самая немодная технология в мире, однако:
Когда хайпили контейнеры, я пожимал плечами. JVM ставится вообще без каких-либо зависимостей, просто копированием папки, и... все! Все работает. Хочешь в /home положи, хочешь десяток JVM рядом держи и запускай хоть параллельно. Даже никакие переменные прописывать не надо.
Когда каждый язык изобретал свой package management, я опять пожимал плечами. Раздутые node_modules? В Maven каждая зависимость иммутабельна, скачивается один раз в жизни и дальше шарится между вообще всеми возможными приложениями. Lock-файлы? В Maven версии прописываются не диапазонами, граф зависимостей однозначен в любой момент времени настоящего и будущего, безо всяких .lock-файлов. Удалить из Maven Central ничего нельзя, так что драмы вроде left-pad тоже невозможны. Что такое reproducible builds я тоже никогда не понимал: как в принципе можно так напрограммировать, что билд будет не reproducible? История о том, что node_modules надо периодически удалять, если где-то что-то застряло, стабильно вызывали смех: вы там что, даже файл надежно скачать не можете?
Когда я пытаюсь скомпилять какой-нибудь C/C++ проект, каждый раз с нежностью вспоминаю Java: просто запустил и просто работает. Сетап у всех одинаковый, тулинг одинаковый, препроцессора нет, ручек у компилятора тоже. В системе не должно стоять магического набора говна, про которое надо каким-то образом догадаться да еще и версии угадать. Конечно, от такой жизни захочешь Докер.
К сожалению, с появлением Gradle преимущества Java в простоте сборки потихоньку сходят на нет: попытаться запустить проект на Gradle так же сложно, как и на C++. Но я еще помню хорошие времена. Особенно когда новая версия JVM выходила раз в пять лет, и тупо вообще весь мир сидел на одной и той же.
А, я не говорил, что JVM-тулинг вообще весь кросс-платформенный? Если вы свели сборку/запуск к <mvn что-то>, то она запустится на Windows так же тривиально, как и на macOS/Linux.
Вот уж воистину, сколько плюсов от того, что просто делаешь не что-то сверхординарное, а просто логично и нормально. По нашим временам — редкость.
Когда хайпили контейнеры, я пожимал плечами. JVM ставится вообще без каких-либо зависимостей, просто копированием папки, и... все! Все работает. Хочешь в /home положи, хочешь десяток JVM рядом держи и запускай хоть параллельно. Даже никакие переменные прописывать не надо.
Когда каждый язык изобретал свой package management, я опять пожимал плечами. Раздутые node_modules? В Maven каждая зависимость иммутабельна, скачивается один раз в жизни и дальше шарится между вообще всеми возможными приложениями. Lock-файлы? В Maven версии прописываются не диапазонами, граф зависимостей однозначен в любой момент времени настоящего и будущего, безо всяких .lock-файлов. Удалить из Maven Central ничего нельзя, так что драмы вроде left-pad тоже невозможны. Что такое reproducible builds я тоже никогда не понимал: как в принципе можно так напрограммировать, что билд будет не reproducible? История о том, что node_modules надо периодически удалять, если где-то что-то застряло, стабильно вызывали смех: вы там что, даже файл надежно скачать не можете?
Когда я пытаюсь скомпилять какой-нибудь C/C++ проект, каждый раз с нежностью вспоминаю Java: просто запустил и просто работает. Сетап у всех одинаковый, тулинг одинаковый, препроцессора нет, ручек у компилятора тоже. В системе не должно стоять магического набора говна, про которое надо каким-то образом догадаться да еще и версии угадать. Конечно, от такой жизни захочешь Докер.
К сожалению, с появлением Gradle преимущества Java в простоте сборки потихоньку сходят на нет: попытаться запустить проект на Gradle так же сложно, как и на C++. Но я еще помню хорошие времена. Особенно когда новая версия JVM выходила раз в пять лет, и тупо вообще весь мир сидел на одной и той же.
А, я не говорил, что JVM-тулинг вообще весь кросс-платформенный? Если вы свели сборку/запуск к <mvn что-то>, то она запустится на Windows так же тривиально, как и на macOS/Linux.
Вот уж воистину, сколько плюсов от того, что просто делаешь не что-то сверхординарное, а просто логично и нормально. По нашим временам — редкость.
25 лет назад при проектировании Java создатели допустили множество ошибок, которых бы не было, если бы язык проектировался сегодня, и которые нельзя исправить, не сломая обратную совместимость. От каких ошибок вы больше всего страдаете?
Final Results
13%
synchronized на любом объекте, wait/notify/notifyAll у каждого класса
19%
Старые коллекции (ArrayList, HashMap, TreeSet...) не запрещают null
31%
Все коллекции имеют методы модификации, в т.ч. неизменяемые (Collection.add, List.set и т.д.)
46%
Checked исключения (необходимость писать throws/catch)
23%
Модификатор по умолчанию для полей - не final
14%
Serializable
25%
Raw типы
14%
Switch case fall through
4%
Возможность вызывать статические методы из подкласса
28%
Object в сигнатурах методов: Collection.contains(Object), Map.containsKey(Object) и т.д.