English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutoriais Básicos de Java

Controle de fluxo Java

Java Array

Java Orientação a Objetos (I)

Java Orientação a Objetos (II)

Java Orientação a Objetos (III)

Tratamento de Exceções Java

Java Lista (List)

Java Fila (Queue)

conjuntos Java Map

conjuntos Java Set

Java Entrada e Saída(I/)

Reader do Java/Writer

Outros tópicos do Java

Java 9 Operador Diamond (Diamond Operator)

Java 9 Novas funcionalidades

O operador diamond é no java 7 pode melhorar a legibilidade do código, mas não pode ser usado em classes internas anônimas.

introduzido em java 9 ne, pode ser usado com classes internas anônimas para melhorar a legibilidade do código.

Considerando o seguinte Java 9 Antes do código:

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();
}

O resultado da execução é:

1
2
Test

em Java 9 ne, podemos usar o operador <> em classes anônimas, conforme mostrado a seguir:

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();
}

O resultado da execução é:

1
2
Test

Java 9 Novas funcionalidades