工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> Java

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

  1. Javaのfinalキーワード完全解説:変数、メソッド、クラスでの活用法
  2. Java instanceof演算子完全ガイド:基本から継承・インターフェースまで
  3. Java継承のマスター:概念、種類、実践例
  4. Javaネストクラスとインナークラス完全ガイド:種類、例、ベストプラクティス
  5. Java Staticネストクラスの理解:用法、違い、実例
  6. Java無名インナークラス完全ガイド:定義、構文、実践例
  7. Javaシングルトンパターン完全解説:安全な実装と活用法
  8. Javaリフレクション完全ガイド:実行時のクラス・メソッド・フィールド検査
  9. Java ObjectOutputStream完全ガイド:シリアル化、メソッド、実践例
  10. Javaジェネリクス完全ガイド:再利用可能で型安全なコードの構築
  11. Javaファイル操作のマスター:java.ioによる作成・読み取り・書き込み・削除