Рубрики
Без рубрики

Особенности, которые Java 16 предоставляет разработчикам

Живкович Мило Узнает о сопоставлении шаблонов, закрытых классах и других новых функциях Java…. С тегами java, программирование, java 16, java 8.

Мой Знак Зодиака-Дева.

Узнайте о сопоставлении шаблонов, закрытых классах и других новых функциях Java.

Java не нуждается в представлении. Это язык программирования с многолетним опытом работы. Последние обновления добавили в язык несколько новых функций: закрытые классы, сопоставление с образцом и дополнительные меры безопасности.

JEP-397 (ДЖЕП-397)

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

//ключевое слово здесь запечатано, что позволяет разрешать//разрешает списки классов, которые могут расширять запечатанный класс общедоступный абстрактный запечатанный класс Форма разрешает Круг, прямоугольник, квадрат { …}

При базовом интерфейсе вы не получаете отражательной способности. Вы не знаете о конечном наборе конкретных реализаций.

С закрытыми классами вы получаете такое рефлексивное поведение. Вы знаете о типе типов, которые вы можете иметь в своем домене.

Перечисления говорят о конечном наборе значений. Закрытые классы рассказывают о конечном количестве значений.

запечатанный интерфейс Небесных тел позволяет Планете, Звезде, Комете {…}

последний класс Planet реализует Небесный {… } заключительный класс Звездные орудия Небесного Зодиака… } последний класс Comet реализует Небесный { …}

Однако эта иерархия не отражает важного знания предметной области о том, что в нашей модели существует только три вида небесных объектов. В таких ситуациях ограничение набора подклассов или подинтерфейсов может упростить моделирование. — JEP-397 (ДЖЕП-397)

ДЖЕП-390

Примитивные классы-оболочки – это классы, основанные на значениях. Примерами классов, основанных на значениях, являются: Байт , Короткий , Целое число , Длинный , Поплавок , Двойной , Логическое значение и Символ ). Подробнее о классах, основанных на значениях, можно найти здесь .

Поскольку они являются неизменяемыми объектами, бессмысленно использовать конструкторы.

Чтобы предотвратить неправильное использование, появилась новая аннотация. Это приведет к появлению предупреждений каждый раз, когда компилятор найдет конструктор класса на основе значений.

@jdk.внутренний. Основанный на ценности

JEP-396 (ДЖЕП-396)

Это делается для того, чтобы побудить пользователей использовать стандартный Java API. Тем не менее, вы могли бы выбрать расслабленную инкапсуляцию. Если это необходимо, но старайтесь избегать этого.

Вам нужно будет добавить реквизит в панель запуска JVM. Ниже вы можете увидеть возможные аргументы, которые вы можете ввести. Подробнее с аргументами можно ознакомиться здесь .

–незаконный доступ= разрешить | запретить | отлаживать | предупреждать

Хотя это предусмотрено в JDK 16, вы можете столкнуться с проблемами с более ранними версиями /. Это изменение было предложено после выпуска JDK 9 .

Даже сегодня, например, с Java, некоторые инструменты сборки выводят “отражающий доступ”-предупреждения при создании проектов Java, которые просто “кажутся не готовыми”, хотя сборки в порядке. — источник

JEP-394 (ДЖЕП-394)

Сопоставление с образцом существует уже давно. Вы можете найти его, например, в Эликсире.

В Java существует множество условий instanceof . Мотивация к сокращению операций приводит к сопоставлению с образцом.

Сопоставление с образцом позволяет кратко выразить желаемую “форму” объекта (the_pattern_), а также для различных операторов и выражений проверить эту “форму” на соответствие их входным данным (the_matching_). — JEP-394 (ДЖЕП-394)

////много шаблонного кода, если (obj экземпляр строки) {Строки = (Строка) obj;//grr….. }

С помощью сопоставления с образцом мы могли бы получить этот код. Уменьшает шаблонность , выполняет приведение и объявляет переменную.

if (obj экземпляр строки s) {//Пусть сопоставление с образцом сделает всю работу! … }

Переменная шаблона находится в той области, где она соответствует. Таким образом, подобный код является действительным.

если (экземпляр точки p) {//p находится в области видимости… }//p здесь не входит в сферу применения, если (b экземпляр пункта p) {//Конечно! … }

Теперь тебе никогда не придется беспокоиться об именах. Повторное использование существующих имен возможно, если области действия разные.

Что улучшает сопоставление с образцом?

Уменьшает явные приведения. Что дает более читаемый код в методах равенства.

возврат (o экземпляр CaseInsensitiveString) && ((CaseInsensitiveString) o).s.Равный случай(ы);//к этому возврату (o экземпляр CaseInsensitiveString снг) && снг.s.Равный случай(ы);

Посмотрите на следующий пример. Если это условие выводит экземпляр строки s , принимается значение true, s получает присвоенное значение. Напротив, s не имеет значения, если не удается выполнить сопоставление с шаблоном.

Таким образом, этот код может завершиться нормально. У вас нет недоступного кода . s получает присвоенное значение, если условие проходит, если нет s безопасно отбрасывается.

публичная пустота только для Строк (Объект o) вызывает исключение MyException {если (! (o экземпляры строк)) выбрасывают новое исключение MyException();//s имеет значение в этот момент System.out.println(ы); …}

Java развивается. Вызывает множество критических изменений. Вызывает множество проблем .

Постоянные обновления Java

Тем не менее, нам действительно нужно приспособиться. Используйте новые функции, чтобы мы создавали лучшее программное обеспечение.

Вот несколько особенностей, которые я бы убрал. Вы можете прочитать больше в разделе ниже.

Проект JEP: Сопоставление шаблонов для коммутатора (предварительный просмотр)

JDK 16: Новые функции в Java 16

Фото Кристины Морилло из Пиксели

Оригинал: “https://dev.to/zivce/features-java-16-brings-to-developers-2ge2”