Préface
Il ne fait aucun doute que Java 8 est la version la plus importante de Java depuis Java 5 (publiée en 2004). Cette version contient plus d'une douzaine de nouvelles fonctionnalités dans les langues, les compilateurs, les bibliothèques, les outils et JVM.
Java 8 est une version majeure de Java. Certaines personnes croient que bien que ces nouvelles fonctionnalités soient attendues par les développeurs Java, cela nécessite également beaucoup d'efforts pour apprendre. Ci-dessous, cet article vous présentera les détails des nouvelles fonctionnalités en option des méthodes par défaut et des méthodes statiques dans Java 8. Sans plus tarder, jetons un coup d'œil à l'introduction détaillée.
Facultatif
La classe facultative ( java.util.Optional ) est une classe de conteneurs qui représente si une valeur existe ou n'existe pas. Il était utilisé pour utiliser NULL pour indiquer qu'une valeur n'existe pas. Maintenant, facultatif, peut mieux exprimer ce concept. Et cela peut éviter les exceptions de pointeur nul.
Méthodes courantes:
Optional.of(T t) : crée une instance facultative.Optional.empty() : Crée une instance facultative vide.Optional.ofNullable(T t) Si t n'est pas nul, créez une instance facultative, sinon créez une instance vide.isPresent() : détermine si la valeur est incluse.orElse(T t) : renvoie la valeur si l'objet d'appel contient une valeur, sinon renvoie t.orElseGet(Supplier s) : renvoie la valeur si l'objet d'appel contient une valeur, sinon renvoie la valeur obtenue par S.map(Function f) S'il y a une valeur pour le traiter et renvoie le traitement facultatif, sinon il renvoie Optional.empty()flatMap(Function mapper) est similaire à MAP, nécessitant que la valeur de retour doit être facultative.Ce qui suit est un paragraphe d'ImportNew pour nous dire comment utiliser correctement facultatif. Par exemple, ne l'écrivez pas comme ceci:
public static String getName (user u) {facultatif <ser utilisateur> user = optional.ofNullable (u); if (! user.ispresent ()) renvoie "inconnu"; return user.get (). Nom;}Cette réécriture n'est pas seulement concise, mais aussi l'opération est la même que le premier morceau de code. Ce n'est rien de plus que d'utiliser la méthode ISPRESENT pour remplacer u == null. Une telle réécriture n'est pas l'utilisation correcte de facultatif, réécrivons-la à nouveau.
public static String getName (user u) {return facultatif.ofNullable (u) .map (user-> user.name) .orelse ("inconnu");}C'est la bonne façon d'utiliser facultatif. Ensuite, selon cette idée, nous pouvons passer des appels de chaîne avec la tranquillité d'esprit au lieu de porter des jugements de couche par couche. Regardez un morceau de code:
La chaîne statique publique getchampionName (compétition comp) lève illégalArgumentException {if (comp! = null) {compresult result = comp.getResult (); if (result! = null) {User Champion = result.getCHampion (); if (champion! = null) {return Champion.getName (); }}} Jetez un nouveau IllégalArgumentException ("La valeur de Param Comp n'est pas disponible.");} Pour diverses raisons (telles que: la compétition n'a pas encore produit de championnat, des appels anormaux à la méthode, un grand groupe de cadeaux enfoui dans la mise en œuvre d'une certaine méthode, etc.), nous ne pouvons pas nous promener avec plaisir comp.getResult().getChampion().getName() . D'autres langues telles que Kotlin fournissent des bénédictions d'opérateur au niveau de la syntaxe: comp?.getResult()?.getChampion()?.getName()
Voyons à quoi ressembleront ces codes après le support facultatif.
La chaîne statique publique getchampionname (compétition comp) lève illégalArgumentException {return facultatif.ofNullable (comp) .map (c-> c.getResult ()) .map (r-> r.getChampion ()) .map (u-> u.getName ()) .OrelSetHed (() -> new illégalExexception ("" la valeur de la compression). ").C'est très confortable. Le charme de facultatif est plus que cela. Facultatif a également certaines utilisations magiques, telles que facultatives qui peuvent être utilisées pour tester la légalité des paramètres.
public void setName (String Name) lève illégalArgumentException {this.name = optional.ofnullable (name) .filter (user :: isNameValid) .OrelsEthrow (() -> new illégalargumentException ("invalid username."));};Le code ci-dessus fait référence à l'importNew - Java8 Comment utiliser correctement facultatif.
Méthodes par défaut et statiques dans les interfaces
Des méthodes statiques peuvent être ajoutées à l'interface Java8, ou des méthodes par défaut peuvent être ajoutées, et les méthodes par défaut sont modifiées par défaut.
Interface publique Fun <T> {default void getName () {System.out.println ("Hello World"); } static void getage () {System.out.println ("nine"); }}Si une interface définit une méthode par défaut, une classe parent de sa classe d'implémentation définit une méthode avec le même nom et la même liste de paramètres. Ensuite, lorsque la classe d'implémentation est appelée, la méthode de la classe parent est exécutée.
classe publique testf {public void getName () {System.out.println ("testf"); }} interface publique Testerface {default void getName () {System.out.println ("Hello World"); }} Classe publique Test étend TestF implémente TestInterface {public static void main (String [] args) {test t = new test (); t.getName (); // La sortie est testf}}Si une classe d'implémentation implémente deux interfaces, si une interface parent fournit une méthode par défaut et que l'autre interface parent fournit également une méthode avec le même nom et la même liste de paramètres (que la méthode soit la méthode par défaut), la méthode doit être remplacée pour résoudre le conflit, sinon une erreur sera signalée.
Interface publique TESTInterface {default void getName () {System.err.println ("Hello World"); }} Interface publique TESTINTERAFFACE1 {void getName ();} public class test1 implémente TestInterface, TESTInterface1 {public void getName () {System.out.println ("Tes1f"); }}Résumer
Ce qui précède est l'intégralité du contenu de cet article. J'espère que le contenu de cet article a une certaine valeur de référence pour l'étude ou le travail de chacun. Si vous avez des questions, vous pouvez laisser un message pour communiquer. Merci pour votre soutien à wulin.com.