• <nav id="wkkge"><strong id="wkkge"></strong></nav>
  • <menu id="wkkge"></menu>
  • Java8新特性
    Java9新特性

    Java9鉆石操作符(Diamond Operator)

     

     

    鉆石操作符是在 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

     

    全部教程
  • <nav id="wkkge"><strong id="wkkge"></strong></nav>
  • <menu id="wkkge"></menu>
  • 面对面棋牌游戏