Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Java

Operador Diamond do Java: Simplifique Generics no Java 7+

Operador Diamond no Java

O operador diamond foi introduzido no Java 7 para tornar o código mais legível para Generics. Um generic é um tipo de argumento. Usando generics, podemos passar qualquer tipo de objeto para ser processado pelos métodos da classe. Por exemplo, se estivéssemos criando uma lista de strings antes do Java 7, teríamos que usar a seguinte sintaxe para instanciar uma lista de strings com um objeto ArrayList.

 List<String> listOfStrings = new ArrayList<String>(); 

A partir do Java 7, podemos usar o operador diamond para simplificar a sintaxe acima da seguinte forma −

 List<String> listOfStrings = new ArrayList<>(); 

Mas não podia ser usado com classes internas anônimas. Por exemplo, não podemos omitir o tipo de objeto do operador diamond na sintaxe abaixo antes do Java 9.

 Handler<Integer> intHandler = new Handler<Integer>(1) { @Override public void handle() { System.out.println(content); } }; 

Operador Diamond em Classe Anônima

No Java 9, o operador diamond pode ser usado com uma classe anônima também para simplificar o código e melhorar a legibilidade.

 Handler<Integer> intHandler = new Handler<>(1) { @Override public void handle() { System.out.println(content); } }; 

Operador Diamond no Java 7, Java 8

No exemplo abaixo, criamos classes anônimas para uma classe abstrata Handler que aceita um argumento genérico e passamos o tipo de objeto ao criar a classe anônima, pois temos que passar o argumento de tipo caso contrário o programa não compilará.

Exemplo

 public class Tester { public static void main(String[] args) { // cria uma classe anônima para lidar com 1 // Aqui precisamos passar argumentos de tipo no operador diamond // antes do Java 9 caso contrário o compilador reclamará erro Handler<Integer> intHandler = new Handler<Integer>(1) { @Override public void handle() { System.out.println(content); } }; intHandler.handle(); // cria uma classe anônima para lidar com 2 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(); } 

Saída

Vamos compilar e executar o programa acima, isso produzirá o seguinte resultado −

 1 2 Test 

Operador Diamond Java 9 em diante

Com Java 9, podemos usar o operador <> com classe anônima também, como mostrado abaixo.

Exemplo

No exemplo abaixo, criamos classes anônimas para uma classe abstrata Handler que aceita um argumento genérico mas sem o tipo de objeto ao criar a classe anônima, pois não precisamos passar o argumento de tipo. O compilador infere o tipo automaticamente.

 public class Tester { public static void main(String[] args) { // cria uma classe anônima para lidar com 1 // Aqui não precisamos passar argumentos de tipo no operador diamond // pois o compilador Java 9 pode inferir o tipo automaticamente 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(); } 

Saída

Vamos compilar e executar o programa acima, isso produzirá o seguinte resultado −

 1 2 Test 

Java

  1. Estruturas de Dados em Java: Explorando Classes Core e Collections Framework
  2. Configuração do Ambiente de Desenvolvimento Java 10: Compilar, Executar e Testar
  3. Java Hello World: Guia Passo a Passo para Escrever Seu Primeiro Programa Java
  4. Encapsulamento em Java: Guia Completo com Exemplo Prático
  5. Algoritmo Insertion Sort em Java: Exemplo Claro e Guia Passo a Passo
  6. Sobrecarga de Construtores em Java – Explicado com Exemplos Práticos de Código
  7. Java EnumSet: Criação, Operações e Dicas de Desempenho
  8. Dominando Expressões Lambda no Java 8: Guia de Programação Funcional
  9. Multithreading em Java Explicado: Conceitos, Ciclo de Vida e Exemplos Práticos de Código
  10. Dominando Java SortedSet: Um Guia Prático para TreeSet e Seus Métodos