课程表

Java 基础教程

Java 面向对象

Java 高级教程

工具箱
速查手册

Java 9 钻石操作符

当前位置:免费教程 » Java相关 » Java

钻石操作符是在 java 7 中引入的,可以让代码更易读,但它不能用于匿名的内部类。

在 java 9 中, 它可以与匿名的内部类一起使用,从而提高代码的可读性。

看下 Java 9 之前的代码:

  1. public class Tester {
  2.    public static void main(String[] args) {
  3.       Handler<Integer> intHandler = new Handler<Integer>(1) {
  4.          @Override
  5.          public void handle() {
  6.             System.out.println(content);
  7.          }
  8.       };
  9.       intHandler.handle();
  10.       Handler<? extends Number> intHandler1 = new Handler<Number>(2) {
  11.          @Override
  12.          public void handle() {
  13.             System.out.println(content);
  14.          }
  15.       };
  16.       intHandler1.handle();
  17.       Handler<?> handler = new Handler<Object>("test") {
  18.          @Override
  19.          public void handle() {
  20.             System.out.println(content);
  21.          }
  22.       };
  23.       handler.handle();    
  24.    }  
  25. }
  26. abstract class Handler<T> {
  27.    public T content;
  28.  
  29.    public Handler(T content) {
  30.       this.content = content; 
  31.    }
  32.    
  33.    abstract void handle();
  34. }

执行输出结果为:

  1. 1
  2. 2
  3. Test

在 Java 9 中,我们可以在匿名类中使用 <> 操作符,如下所示:

  1. public class Tester {
  2.    public static void main(String[] args) {
  3.       Handler<Integer> intHandler = new Handler<>(1) {
  4.          @Override
  5.          public void handle() {
  6.             System.out.println(content);
  7.          }
  8.       };
  9.       intHandler.handle();
  10.       Handler<? extends Number> intHandler1 = new Handler<>(2) {
  11.          @Override
  12.          public void handle() {
  13.             System.out.println(content);
  14.          }
  15.       };
  16.       intHandler1.handle();
  17.       Handler<?> handler = new Handler<>("test") {
  18.          @Override
  19.          public void handle() {
  20.             System.out.println(content);
  21.          }
  22.       };
  23.  
  24.       handler.handle();    
  25.    }  
  26. }
  27.  
  28. abstract class Handler<T> {
  29.    public T content;
  30.  
  31.    public Handler(T content) {
  32.       this.content = content; 
  33.    }
  34.    
  35.    abstract void handle();
  36. }

执行输出结果为:

  1. 1
  2. 2
  3. Test


转载本站内容时,请务必注明来自W3xue,违者必究。
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号