Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Java

Java 9 - Opérateur Diamond de classe interne

L'opérateur Diamond a été introduit dans Java 7 pour rendre le code plus lisible, mais il ne pouvait pas être utilisé avec les classes internes anonymes. Dans Java 9, il peut également être utilisé avec une classe anonyme pour simplifier le code et améliorer la lisibilité. Considérez le code suivant antérieur à Java 9.

Testeur.java

Démo en direct
public class Tester {
   public static void main(String[] args) {
      Handler<Integer> intHandler = new Handler<Integer>(1) {
         @Override
         public void handle() {
            System.out.println(content);
         }
      };
      intHandler.handle();
      Handler<? extends Number> intHandler1 = new Handler<Number>(2) {
         @Override
         public void handle() {
            System.out.println(content);
         }
      };
      intHandler1.handle();
      Handler<?> handler = new Handler<Object>("test") {
         @Override
         public void handle() {
            System.out.println(content);
         }
      };
      handler.handle();    
   }  
}
abstract class Handler<T> {
   public T content;

   public Handler(T content) {
      this.content = content; 
   }
   
   abstract void handle();
}

Sortie

1
2
Test

Avec Java 9, nous pouvons utiliser l'opérateur <> avec une classe anonyme, comme indiqué ci-dessous.

Testeur.java

public class Tester {
   public static void main(String[] args) {
      Handler<Integer> intHandler = new Handler<>(1) {
         @Override
         public void handle() {
            System.out.println(content);
         }
      };
      intHandler.handle();
      Handler<? extends Number> intHandler1 = new Handler<>(2) {
         @Override
         public void handle() {
            System.out.println(content);
         }
      };
      intHandler1.handle();
      Handler<?> handler = new Handler<>("test") {
         @Override
         public void handle() {
            System.out.println(content);
         }
      };

      handler.handle();    
   }  
}

abstract class Handler<T> {
   public T content;

   public Handler(T content) {
      this.content = content; 
   }
   
   abstract void handle();
}

Sortie

1
2
Test

Java

  1. Mot-clé Java final
  2. Opérateur instanceof Java
  3. Classe imbriquée et interne Java
  4. Classe statique imbriquée Java
  5. Classe anonyme Java
  6. Classe Java Singleton
  7. Réflexion Java
  8. Classe Java ObjectOutputStream
  9. Génériques Java