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

Java 9 - 内部クラスのダイヤモンド演算子

ひし形演算子はコードを読みやすくするために Java 7 で導入されましたが、匿名内部クラスでは使用できませんでした。 Java 9 では、コードを簡素化し、可読性を向上させるために、匿名クラスでも使用できます。 Java 9 より前の次のコードを検討してください。

Tester.java

ライブデモ
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 では、以下に示すように、匿名クラスで <> 演算子を使用できます。

Tester.java

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 最終キーワード
  2. オペレーターの Java インスタンス
  3. Java 継承
  4. Java のネストされた内部クラス
  5. Java ネストされた静的クラス
  6. Java匿名クラス
  7. Java シングルトン クラス
  8. Java リフレクション
  9. Java ObjectOutputStream クラス
  10. Javaジェネリック
  11. Java ファイル クラス