Java匿名内部类写法简化过程

Java匿名内部类简化过程

1. 普通实现类 / 子类 (最原始)

  • 先定义一个子类/实现类,继承父类或实现接口,再创建对象
  • class 子类名 extends 父类 {
        重写父类中的方法
    }
    
    // 或者
    
    class 实现类名 implements 接口 {
        重写接口中的方法
    }
    
    父类/接口 对象名 = new 子类名()/实现类名();
    

2. 匿名内部类

  • 简化前提: 子类/实现类只会使用一次
  • 父类/接口 对象名 = new 父类/接口() {
        重写父类/接口中的方法
    };
    

3. lambda表达式

  • 简化前提: Lambda表达式只能替代函数式接口的匿名内部类! 函数式接口: 有且仅有一个抽象方法的接口
  • @FunctionalInterface  //用来验证是否是函数式接口的注解
    父类/接口 对象名 = (被重写方法的参数) -> {
        重写方法
    };
    

4. 方法引用

  • 简化前提: 方法引用需要提前好定义好方法, 并且方法签名与函数式接口的抽象方法参数一致, 此时就可以简化参数不写
  • // 下面几种类型基本都是大同小异的
    // 静态方法
    原始: (a,b) -> 类名.静态方法(a,b)
    简化: 类名::静态方法
    // 实例方法
    原始: (a,b) -> 对象名.实例方法(a,b)
    简化: 对象的类型名::实例方法
    // 特定类型
    原始: (a,b,c) -> a.实例方法(b,c)
    简化: a的类型名::实例方法
    // 构造器 (参数数量可以为0)
    原始: (a,b) -> new 类名(a,b)
    简化: 类名::new
    
posted @ 2025-03-19 16:50  hyd666  阅读(16)  评论(0)    收藏  举报