• 念念不忘,必有回响!包含: Java 基础, Java 部分源码, JVM, Spring, Spring Boot, Spring Cloud, 开源项目等
  • 念念不忘,必有回响!包含: 数据库原理, MySQL, ElasticSearch, MongoDB, Docker,CI&CD, Linux, DevOps, 分布式, 中间件等
  • 念念不忘,必有回响!包含: 开发工具, Git, IDE, 源码阅读,读书笔记等

在接口中提供默认的方法实现(有点像抽象类)

2023-04-15 11:12
1495
0

在jdk1.8里面,不仅可以定义接口,还可以在接口中提供默认的实现。这一个小小的改变却让整个抽象设计都随着改变了!

在定义的时候;{default 关键字必须}

public interface IFormula {
double calculate(int a);

// 平方
default double sqrt(int a) {
    return Math.sqrt(a);
}

}

    @小傅哥: 代码已经复制到剪贴板

在使用的时候(一);

@Test
public void test_01() {
    IFormula formula = new IFormula() {
        @Override
        public double calculate(int a) {
            return a * a;
        }
    };
    System.out.println(formula.calculate(2));
    System.out.println(formula.sqrt(2));
}
    @小傅哥: 代码已经复制到剪贴板

在使用的时候(二);如果只是一里面方式这么使用,那么就没多大意思了。我一直说过;好的代码都很骚!

  1. a; a是一个入参名称,可以其他任何名字
  2. ->a*a; 箭头指向是具体的实现
  3. 但是,这样其实不太适合加日志了
@Test
public void test_02() {
    // 入参a 和 实现
    IFormula formula = a -> a * a;
    System.out.println(formula.calculate(2));
    System.out.println(formula.sqrt(2));
}

全部评论