最近老师上课在讲lambda表达式内容,练习的时候仿照老师的代码写了一个,但是整个代码半知半解,有大神可以帮我讲讲整个程序的思路吗,最好详细一点,比如表达式n -> GetArea.getSquareArea(n)和实例化对象Shape shape的关系,啥意思,将lambda表达式的内容作为参数传给这个新建的对象?
package test421;
interface Shape { // 定义Shape接口,接口内包含有一个抽象方法
double area(double x);
}
//定义一个类,类中包括两个静态方法
class GetArea {
public static double getSquareArea(double x) { //类中定义一个静态方法,实现计算正方形面积的功能
double square_area = x * x;
return square_area;
}
public static double getCircleArea(double r) { //类中定义一个静态方法,实现计算圆形面积的功能
double circle_area = Math.PI*r*r;
return circle_area;
}
}
//定义测试类
public class Test1440 {
public static void printArea(double x, Shape shape) {
System.out.println(shape.area(x));
}
public static void main(String[] args) {
// TODO Auto-generated method stub
printArea(3.00, n -> GetArea.getSquareArea(n)); //使用lambda表达式
printArea(2.00, m -> GetArea.getCircleArea(m));
}
}
函数式接口,允许只定义一个方法
接口有点工厂模式的感觉想学的话可以在https://www.runoob.com/看看,很有用的
lamda表达式的做为参数表示的是将lamda表达式的返回值做为参数