Java 9 ダイヤモンド演算子(Diamond Operator)

Java 9 新特性Java 9 の新機能

ダイヤモンド演算子は Java 7 で導入され、コードをより読みやすくできますが、匿名内部クラスでは使用できません。

Java 9 では、匿名内部クラスと一緒に使用でき、コードの可読性を向上させます。

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

実行出力結果は次のとおりです:

1
2
Test

Java 9 では、匿名クラスで <> 演算子を次のように使用できます:

例

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

実行出力結果は次のとおりです:

1
2
Test

Java 9 新特性Java 9 の新機能

その他の拡張