English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Nuove caratteristiche di Java 9
Il simbolo diamond è stato introdotto in Java 7 per rendere il codice più leggibile, ma non può essere utilizzato nelle classi interne anonime.
In Java 9, può essere utilizzato insieme alle classi interne anonime per migliorare la leggibilità del codice.
Consideriamo il seguente codice prima di Java 9:
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(); }
L'output dell'esecuzione è:
1 2 Test
In Java 9, possiamo utilizzare l'operatore <> nelle classi anonime, come segue:
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(); }
L'output dell'esecuzione è:
1 2 Test