Interview to kill | Veuillez parler des nouvelles fonctionnalités introduites par Java8-18 (2)

Prenez l'habitude d'écrire ensemble ! C'est le 7ème jour de ma participation au "Nuggets Daily New Plan · April Update Challenge", cliquez pour voir les détails de l'événement .

Java8 est sorti le 18 mars 2014 et depuis le 6 avril 2022, la dernière version est Java18. Les versions 17, 11 et 8 sont les versions de support à long terme (LTS) actuellement prises en charge. Cet article vous amène à passer en revue les fonctionnalités de chaque version à partir de Java 8. Asseyez-vous sur le banc et c'est parti ! Si vous voulez lire l'article précédent, cliquez ici pour une interview et un anti-kill | Veuillez parler des nouvelles fonctionnalités introduites par Java8-18 (1)

Quoi de neuf dans Java 9

Stream.ofNullable , depuis Java 8, on peut utiliser Stream.of (Object... values) pour créer un flux d'éléments, à partir de Java 9 on peut utiliser Stream.ofNullable sur un seul élément pour créer un flux ou renvoyer un flux nul .

List<Location> locList = new ArrayList<>(Arrays.asList(loc, loc1, loc2));
Stream.ofNullable(locList);
复制代码

Méthodes privées dans l'interface

Java 8 a introduit le concept de méthodes par défaut dans Interface. S'il existe plusieurs méthodes par défaut qui souhaitent partager la même logique, les méthodes privées peuvent être utilisées pour implémenter la logique publique.

Modules Java

Les modules Java sont une technologie dans laquelle les packages et leurs ressources associées peuvent être regroupés. Un module contient un descripteur de module, qui spécifiera le nom du module, les modules dépendants, les packages disponibles pour les autres modules, etc.

L'un des objectifs ultimes est de réduire la taille de l'application lors de l'exécution. Si nous n'utilisons pas d'interface graphique, nous n'avons pas besoin d'ajouter ce module en tant que dépendance dans notre application.

Bien sûr, il existe d'autres nouvelles fonctionnalités, y compris, mais sans s'y limiter :

  • Essayer avec des ressources
  • Cours anonymes
  • @SafeVarargs Annotation
  • Méthodes de l'usine de collecte
  • Nouveau schéma de chaîne de version
  • JShell : le shell Java (REPL)
  • Installer Enhancement for Microsoft windows and many more

Java 10 新特性

local variable type inference

从 Java 10开始,我们可以初始化非空的局部变量并将它们赋值给 var 类型。变量的类型是由上下文决定的。

例子如下:

public class Sample {
public static void main(String[] args) {
    var x = 10;
    var y = 11;
    System.out.println(x + y);
    var obj = new TryVar();
    System.out.println(obj.getName());
    var c; //Illegal, Compiler will throw an error -> "Cannot use 'var' on variable without initializer"
}
}
class TryVar {
 String name;
 public String getName() {
  return "my name";
 }
}
复制代码

copyOf()

java.util.list,java.util.map和java.util.set每个都有一个新的静态方法copyof(集合)。

它返回给定集合的未经可执行的副本:

@Test(expected = UnsupportedOperationException.class)
public void whenModifyCopyOfList_thenThrowsException() {
    List<Integer> copyList = List.copyOf(someIntList);
    copyList.add(4);
}
复制代码

任何修改此类集合的尝试都会导致Java.Lang.UnsupportedOperationExceptionRuntime异常。

当然还有其它的新特性,包括但不限于:

  • Performance Improvements
  • toUnmodifiable*()
  • Unmodifiable Collections
  • Container Awareness

Java 11 新特性

Java 11作为LTS版本

New String Methods

Java 11在 String 类中添加了一些新的方法: isBlank、 lines、 strip、 stripLeading、 stripTrailing 和 repeat。

从多行字符串中提取非空白的字符串:

String multilineString = "Baeldung helps \n \n developers \n explore Java.";
List<String> lines = multilineString.lines()
  .filter(line -> !line.isBlank())
  .map(String::strip)
  .collect(Collectors.toList());
assertThat(lines).containsExactly("Baeldung helps", "developers", "explore Java.");
复制代码

New File Methods

现在从文件读写字符串更加容易了,们可以使用 Files 类中新的 readString 和 writeString 静态方法。

Path filePath = Files.writeString(Files.createTempFile(tempDir, "demo", ".txt"), "Sample text");
String fileContent = Files.readString(filePath);
assertThat(fileContent).isEqualTo("Sample text");
复制代码

Collection to an Array

Collection 接口包含一个新的缺省 toArray 方法,该方法接受一个 IntFunction 参数。这使得从集合中创建正确类型的数组变得更加容易:

List sampleList = Arrays.asList("Java", "Kotlin");
String[] sampleArray = sampleList.toArray(String[]::new);
assertThat(sampleArray).containsExactly("Java", "Kotlin");
复制代码

当然还有其它的新特性,包括但不限于:

  • Running Java File with single command
  • Local-Variable Syntax for Lambda Parameters
  • Nested Based Access Control
  • JEP 321 : Client HTTP
  • JEP 328 : Enregistreur de vol

A suivre, continuons à parler des nouveautés de chaque version, alors restez connectés !

Je suppose que tu aimes

Origine juejin.im/post/7083628461360676877
conseillé
Classement