无涯教程-Java9 - Diamond运算符

68 阅读1分钟

Diamond运算符在Java 7中引入,使代码更可读,但它无法与匿名内部类一起使用。在Java 9中,它可以与Annonmous类一起使用,并简化代码并提高可读性。在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</span><span class="pun">.</span><span class="pln">handle</span><span class="pun">();</span><span class="pln">    

}
}

abstract class Handler<T> { public T content;

public Handler(T content) { this.content=content; }

abstract void handle(); }

输出

1
2
Test

参考链接

www.learnfk.com/java/java9-…