在接口中提供默认的方法实现(有点像抽象类)
2023-04-15 11:12
3029
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)); }
@小傅哥: 代码已经复制到剪贴板
在使用的时候(二);如果只是一里面方式这么使用,那么就没多大意思了。我一直说过;好的代码都很骚!
- a; a是一个入参名称,可以其他任何名字
- ->a*a; 箭头指向是具体的实现
- 但是,这样其实不太适合加日志了
@Test
public void test_02() {
// 入参a 和 实现
IFormula formula = a -> a * a;
System.out.println(formula.calculate(2));
System.out.println(formula.sqrt(2));
}
全部评论