我们如何在Java 9中将Diamond运算符与匿名类一起使用?

钻石运算符在不断推出的Java 7,使代码更易读,并且不能用于匿名内部类。在Java 9中,diamond运算符可以与匿名内部类一起使用,以提高代码的可读性。

在Java 9中,我们可以在匿名类中使用菱形<>运算符,如下所示:

示例

public class DiamondOperatorTest {
   public static void main(String args[]) {
      Handler<Integer> intHandler = new Handler<>(1) {
         @Override         public void handle() {
            System.out.println(data);
         }
      };
      intHandler.handle();

      Handler<? extends Number> intHandler1 = new Handler<>(2) {
         @Override         public void handle() {
            System.out.println(data);
         }
      };
      intHandler1.handle();

      Handler<?> handler = new Handler<>("test") {
         @Override         public void handle() {
            System.out.println(data);
         }
      };
      handler.handle();
   }
}

abstract class Handler<T> {
   public T data;
   public Handler(T data) {
      this.data = data;
   }
   abstract void handle();
}

输出结果

1
2
test