亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> java

Java 9 菱形操作符扩展:匿名内部类也能用 <> 推断

背景

Java 7 引入菱形操作符 <> 简化泛型构造,但匿名内部类构造器调用不支持。Java 9 移除此限制,匿名类也可用 <> 推断类型参数。

代码对比

Java 8 写法(冗余类型参数)

Handler intHandler = new Handler(1) {
    @Override public void handle() { System.out.println(content); }
};

Handler intHandler1 = new Handler(2) {
    @Override public void handle() { System.out.println(content); }
};

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

Java 9+ 写法(菱形推断)

Handler intHandler = new Handler<>(1) {
    @Override public void handle() { System.out.println(content); }
};

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

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

抽象基类

abstract class Handler {
    public T content;
    public Handler(T content) { this.content = content; }
    abstract void handle();
}

输出

1
2
test

类型推断规则

  • 目标类型(赋值左侧)提供类型参数上下文。
  • 构造器参数类型辅助推断。
  • 匿名类隐式继承/实现的泛型超类型参与推断。
  • 若推断失败(如目标类型为原始类型 Handler),编译报错需显式提供参数。

适用范围

  • 匿名类构造器调用。
  • 实例创建表达式(new Type<>())。
  • 不适用于:方法调用、字段声明、数组创建、显式类型参数方法调用。

java

  1. 深入理解 Java final 关键字:变量、方法与类的不可变性
  2. Java instanceof 运算符完全指南:用法、继承与接口检查
  3. 精通 Java 继承:核心概念、类型与实战示例
  4. 精通 Java 嵌套类与内部类:类型、示例与最佳实践
  5. 深入理解 Java 静态嵌套类:用法、差异与实战示例
  6. 精通 Java 匿名内部类:定义、语法与实战示例
  7. Java 单例模式详解:安全实现与使用指南
  8. 精通 Java 反射:运行时检查类、方法与字段
  9. 精通 Java ArrayList:操作、方法与最佳实践
  10. 掌握 Java ObjectOutputStream:序列化、核心方法与实战示例
  11. 掌握 Java 泛型:构建可复用、类型安全的代码
  12. 掌握 Java 文件操作:java.io 包下的创建、读取、写入与删除