5 основных функций Java 17, которые вы должны знать

5 основных функций Java 17, которые вы должны знать Без рубрики

Изменения — единственная постоянная вещь, и, согласно Дарвиновской теории выживания наиболее приспособленных, человек, который приспосабливается к развивающемуся миру, будет поддерживать себя в долгосрочной перспективе. Похоже, эта теория верна и для Java, поскольку она постоянно развивается и служит уже более двух десятилетий. От JDK 1.0 до Java 17 (LTS) прошел долгий путь. Java 17 — это последний выпуск долгосрочной поддержки (LTS) для платформы SE. Он был выпущен 15 сентября 2021 года и предлагает набор функций, которые мы не должны оставлять неизведанными.

Добавление функций в любой язык программирования повышает его производительность и, таким образом, упрощает сложность кода. Например, C# изначально был клоном Java, но добавление к нему дополнительных функций породило C#. Хотя в Java 17 представлено множество функций, давайте поговорим о некоторых из них. В этой статье мы собираемся обсудить 5 основных функций Java 17.

  1. Ограничение реализации запечатанными классами и интерфейсами

Запечатанные классы были функцией предварительного просмотра в JDK 15, а теперь они стали полноценной функцией в JDK 17. Когда было введено наследование, мнения людей разделились, поскольку оно не ограничивало количество реализаций. Запечатанные классы положили этому конец, поскольку это функция, с помощью которой можно ограничить реализации. Чтобы перейти к сути, запечатанные классы дают нам привилегию контролировать, какие классы или модели могут реализовывать или расширять этот интерфейс или класс соответственно. Он представляет собой ограниченные иерархии классов, обеспечивающие контроль над наследованием. Для запечатанного класса все прямые подклассы должны быть известны во время компиляции, а сторонние клиенты не могут расширять запечатанный класс в своем коде. Чтобы создать класс Java, запечатанный класс Java, добавьте модификатор запечатанного к его объявлению, и ключевое слово разрешения помещается, чтобы указать классы, которые разрешены для данного запечатанного класса.

Читайте также:  Умножение матриц NumPy: начните за 5 минут

Класс Sealed Fruit определяет три разрешенных подкласса: Square, Rectangle и Circle:

package com.geeksforgeeks.example.figures

public sealed class Shape permits, Square, Rectangle, Circle { }

2. Использование Null в регистре Switch теперь разрешено

Ранее, сохраняя выражение селектора как null в операторе switch и выражении, используемом для создания исключения NullPointerException, мы, по сути, должны были создавать исключение Null Pointer Exception, чтобы быть в большей безопасности. Чтобы решить эту проблему, в Java 17 появилась функция, с помощью которой мы можем поместить null в качестве выражения селектора в выражения переключения регистра. Рассмотрим приведенный ниже пример, в котором мы можем передать null в качестве выражения селектора.

switch(checkNumber) {

case 1,7 -> System.out.println(“odd number”) ;

case 2,8 -> System.out.println(“even number”) ;

case null -> System.out.println(“Not defined”) ;

default -> System.out.println(“not a number”) ;

}

Здесь переменная checkNumber получает на вход число. Если в качестве входных данных передается значение null, в качестве выходных данных отображается «Не определено». Обратите внимание, что для случаев 1,7 и 2,8 другие нечетные и четные числа также должны быть взяты в выражении селектора для правильного функционирования кода. Только некоторые из них взяты для сохранения простоты примера.

3. Конец угадывания причины исключения нулевого указателя

Будь то работа со связанными списками или просто фрагмент кода со ссылкой на объект, всегда существует риск ссылки на нулевой объект, который может свести все к нулю, если не будет правильно обработан. Отладка и журналы Java могут помочь, но отладка сама по себе требует времени, а журналы Java не так хороши для предоставления подробной информации об объекте-виновнике, вызвавшем NullPointerException. Здесь функция подсказок NullPointerException в Java 17 действительно помогает, поскольку она предоставляет точное имя переменной, которая является нулевой, из трассировки стека исключения. Таким образом, эта функция избавляет нас от проблем с отладкой и заканчивается игрой в угадайку с поиском указателя, который стал нулевым.

4. Переопределение выражений оператора Switch

Забыть об одном разрыве среди нескольких строк операторов switch-case совсем не желанный гость. Более того, схема case-break-case-break не кажется хорошей сделкой при работе со многими случаями переключения. Да, теперь нам не нужно прерываться при частом использовании break! Java решила нашу проблему, и здесь мы представляем новые выражения операторов switch в Java 17. Новые выражения переключения менее подвержены ошибкам, поскольку теперь они чище и проще. Использование символов со стрелками не только устраняет функциональность провала, но также делает его более читабельным и легким для отладки.

Читайте также:  Шпаргалка по расширенному синтаксису YAML

Мы можем включить более одного значения в один и тот же блок, разделив их запятой. Одной из важных особенностей является введение ключевого слова yield. Во фрагменте кода при выполнении инструкции по умолчанию будет выполняться System.out.println(), и переменная identityTyres станет «Неизвестное транспортное средство», потому что это то, что по умолчанию предназначено для получения.

String identifyTyres = switch (vehicle) {

case Car  -> “four”;

case Bike, Cycle  -> “two”;

case Autorickshaw  -> “three”;

default  -> { System.out.println(“The vehicle could not be found.”);

yield “Unknown Vehicle”;

};

5. Сокращение строк кода с помощью классов записей

Классы записи были предварительно просмотрены в Java 14. Сложный и самый уродливый код POJO выглядит лучше, если он реализован с помощью записей. Они и неизменны, и окончательны. Поля записи не могут быть изменены после создания, а также не разрешено расширение класса записей. Они по праву являются классами только для данных, которые управляют шаблонным кодом POJO. Записи очень полезны, когда все, что нам нужно, это временно хранить неизменяемые данные. Во фрагменте кода данные представляют собой запись, а a и b называются компонентами записи данных. При определении записи мы получаем метод equals(), уже реализованный метод hashcode() и метод toString().реализация для печати компонентов записи вместе с именами компонентов.

record Data(long a, long b) { }

Приведенные выше данные записи эквивалентны следующим строкам кода:

public final class Data {

private final long a;

private final long b;

Public Data(long a, long b) {

this.a = a;

this.b = b;

}

long a() { return this.a; }

long b()  { return this.b; }

// Implementation of equals() and hashCode(), which specify

public boolean equals…

public int hashCode…

// An implementation of toString() that returns a string

public String toString() {…}

}

Вышеупомянутое — это 5 основных функций Java 17 LTE. Нажмите здесь, чтобы узнать о других интересных функциях Java 17. Признаемся, мы всегда рады новым возможностям, будь то мобильные телефоны, телевизоры, стиральные машины и еще много чего. Java в этом плане не меньше и всегда поражает нас улучшениями и введением новых функций. Эксперименты с новыми функциями в коде Java не только расширяют наши знания в области Java, но и мотивируют нас учиться и повышать квалификацию. Java 17 LTE заслуживает большого внимания, поскольку эти функции приемлемы и облегчают задачи для разработчиков Java.

Оцените статью
bestprogrammer.ru
Добавить комментарий