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

Algumas das atualizações do Java 8 ао 15

И ee молодые люди, все хорошо с вами? В этой статье я буду решать некоторые из новинок, которые были обрезать… Помеченный java.

И ee молодые люди, все хорошо с вами?

В этой статье я буду решать некоторые из новинок, которые были появляться, начиная с версии 8 и Java до 15. Не добавлю всех обновлений, так как статья была бы слишком большой. На мне точки зрения были те, которые вызвали больше внимания но у нас есть другие новости, а также интересные.

Тогда bora начать.

Функциональное Программирование (Java 8)

В Java 8, функционального программирования и лямбды были добавлены функции языка. Основные парадигмы функциональное программирование являются неизменяемыми значениями. Данные проходят через конвейера действий, изменения, где каждый шаг ловит какие-либо записи и сопоставляет новый выход. A programaçao функциональный код ser usada com Streams e null-safe |/( Необязательно ) em Java, как показано ниже ...

Потоки (Java 8)

Программы с обычного компьютера, как правило, нужно работать со списком значений и реализации определенной трансформации для каждого значения. До Java 8, вы все равно, что использовать loop for для этого преобразования, но с этого момента, вы можете использовать Streams следующим образом:

Stream.of("Olá", "Ótimo")
    .map(s -> s + " mundo")
    .forEach(System.out::println);

Привет, мир Большим мир

Функции map получает в качестве входных один lambda , который будет применяться ко всем элементам в потоке.

Streams могут работать в List , Set и Map (через преобразования). Благодаря Streams , вы можете избавиться практически от всех loops в коде!

Необязательно (Java 8)

Outro problema com em Java eramas exceções de Нулевой указатель . Таким образом, Java представил Optional – включает в себя ссылку, которая может или не может быть null. Применение обновлений к этой Optional может быть выполнен в функциональном:

Optional.of(new Random().nextInt(10))
    .filter (i -> i % 2 == 0)
    .map(i -> "O número é par: " + i)
    .ifPresent(System.out::println);

Количество пар: 6

В фрагмент выше, мы создаем случайное число, участвуем в объект Optional , а затем, если число четное он будет напечатан на экране.

JShell (Java 9)

Наконец, у нас есть REPL для Java, и его имя JShell ! В двух словах JShell позволяет экспериментировать фрагменты кода Java не писать и компилировать полный класс. Вместо этого вы можете выполнить команду один раз и увидите результат сразу. Вот простой пример:

$ /bin/jshell
jshell> System.out.println("Olá mundo!")
Olá Mundo!

Люди, знакомые с интерпретируемых языков, таких как JavaScript или Python имели удовольствие REPL длиной, но до сих пор, эта функция отсутствует в Java. JShell позволяет определить переменные, но также и сущностей, более сложных, таких, как методы multilines, классов и запустить loops . Кроме того, JShell предлагает поддержку автозаполнения, что очень удобно, если вы не знаете точные методы, предлагаемые определенного класса Java.

Factory Methods Collections неизменными (Java 9)

Чистой List отсутствует Java давно, но эти времена закончились, теперь. Раньше вам нужно было сделать что-то подобное:

jshell> List lista = Arrays.asList(1, 2, 3, 4)
lista ==> [1, 2, 3, 4]

Теперь это упрощенный следующим образом:

jshell> List list = List.of(1, 2, 3, 4)
b ==> [1, 2, 3, 4]

Этот метод of(...) существует List , Set и Map . Все они создают объект неизменяемым всего одной строки кода.

Inferencia типа с var (Java 10)

Java 10 представила новое слово-ключ var , который позволяет не указывать тип переменной.

jshell> var x = new HashSet()
x ==> []

jshell> x.add("maçã")
$ 1 ==> verdadeiro

В приведенном выше примере, типа x может быть определен как HashSet компилятором.

Эта функция помогает сократить код и улучшить читаемость. Тем не менее, есть некоторые ограничения для этого вы можете использовать только var в теле метода, и компилятор inferirá тип во время компиляции, так что все по-прежнему статически типизированным.

Компиляция и выполнение файлов с одной команды (Java 11)

Ранее, когда вы написали программу на языке Java простая и состоит из одного файла, нужно было сначала скомпилировать файл с javac , а затем запустить его с java . В Java 11, вы можете выполнить два действия с помощью команды:

Main.java:

public class Main {
  public static void main(String[] args) {
    System.out.println("Olá mundo!");
  }
}
$ java ./Main.java
Olá Mundo!

Программы simple sound экспериментов, которые состоят только из Java-класса, essential ресурсов для /выполнение файлов исходного кода одного сделают вашу жизнь проще.

Выражение Switch (Java 12)

Java 12 принес нам выражений Switch . Вот быстрая демонстрация того, как выражение отличается от старой инструкции switch .

Старая инструкция switch определяет поток программы:

jshell> var i = 3
jshell> String s;
jshell> switch (i) {
   ...> case 1: s = "um"; break;
   ...> case 2: s = "dois"; break;
   ...> case 3: s = "três"; break;
   ...> default: s = "número desconhecido";
   ...>}
jshell> s
s ==> "três"

В отличие от них, новое выражение switch возвращает значение:

jshell> var i = 3;
jshell> var x = switch(i) {
   ...> case 1 -> "um";
   ...> case 2 -> "dois";
   ...> case 3 -> "três";
   ...> default -> "número desconhecido";
   ...>};
x ==> "três"

Подводя итог, оператор switch древняя определяет поток программы, и новое выражение switch retiorna значение.

Обратите внимание, что это новый оператор, switch это своего рода функция отображения, есть одна запись (в данном случае i и выше) и есть выход (здесь x). Это Pattern Matching помогает сделать Java, совместимый с принципами функционального программирования. Оператор switch аналогичных доступно в Скала там некоторое время.

Некоторые вещи, которые должны соблюдаться:

Вместо того, две точки, используем стрелки -> Нет необходимости break Case default может быть опущен при всех возможных случаях считаются Para habilitar este recurso com Java 12, используйте –enable-preview –source 12

Многострочные строки (Java 13)

Вы уже должны были установить String длинная, несколько строк, как JSON или XML? До сих пор, вы, вероятно, положил бы все в одной строке и использовать символы новой строки ” \n “, но это делает String очень трудно читать. А вот Java 13 с Строка, несколько строк !

Например:

public class Main {
  public static void main (String[] args) {
    var s = """
      {
         "receita": "Vitamina de melancia",
         "duração": "10 minutos",
         "itens": ["melancia", "limão", "salsa"]
      } """;
    System.out.println(s);
  }
}

Теперь выполняем основной метод-путем загрузки одного файла:

java --enable-preview --source 13 Main.java

{
    "receita": "Vitamina de melancia",
    "duração": "10 minutos",
    "itens": ["melancia", "limão", "salsa"]
}

Строки в результате простирается на несколько строк, двойные кавычки”””, остаются нетронутыми, и даже вкладки сохраняются!

Классы данных: Record (Java 14)

Из всех новых возможностей в этой статье, это, вероятно, что я больше волновался, наконец, есть классы данных в Java! Эти классы объявляются с ключевым словом Запись e tom getters automaticos, um конструктор , o método equals() и т.д. Короче говоря, вы можете избавиться от большого куска кода!

jshell> record Employee(String nome, int idade, String departamento) {}
|  created record Employee

jshell> var x = new Employee("Richard", 25, "DEV");
x ==> Employee[nome=Richard, idade=25, departamento=DEV]

jshell> x.nome()
$2 ==> "Richard"

Scala имеет аналогичную функцию, с | case classes и Kotlin , с | дата| класс . В Java, многие разработчики используют Lombok до сих пор, что предложил практически те ресурсы, которые вдохновляют Record Java 14. Более подробную информацию можно найти в этом статьи Baeldung .

instanceof semCast (Java 14)

Как versoes anteriores делают Java ja continuum a palavra-have instanceof :

Object obj = new String("Olá");
if (obj instanceof String) {
  System.out.println("Comprimento da string:" + ((String) obj).length());
}

Скучная часть: сначала проверяет, moses тип, String , а затем превращаем она снова в String для получения его длина.

Теперь, с помощью Java 14, компилятор достаточно умен, чтобы вывод типа автоматически после instanceof :

Object obj = new String("Olá");
if (obj instanceof String myStr) {
  System.out.println("Comprimento da string:" + myStr.length());
}

Закрытые классы (Java 15)

С | ключевое слово| Sealed , вы можете ограничить, какие классы могут продлить определенного класса или интерфейса. Вот пример:

public sealed interface Fruta permits Banana, Pera {
    String getName();
}

public final class Banana implements Fruit {
    public String getName() { return "Banana"; }
}

public final class Pera implements Fruit {
    public String getName() { return "Pera"; }
}

Итак, как это помогает нам? Ну, теперь вы знаете, сколько фруктов есть. Есть реальное значение, которое имеет значение для направления сопоставления с образцом totalmente suportado , onde você pode tratar as classes como Enums . Этот ресурс Запечатанный combina perfeitamente com a nova express de Switch |/explicada anteriormente.

И с этим мы завершили здесь все обновления, которые я нашел правовых поднять, какие-либо вопросы или предложения для я повышение в должности оставить комментарий.

И тут каким-то другое обновление, думаете, здорово добавить?

Характеристика

Baeldung Documentação Java Филипп Гизель Лагерь свободного кода

Оригинал: “https://dev.to/pehdepano/algumas-das-atualizacoes-do-java-8-ao-15-21lj”