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