可以帮忙讲讲下面这段代码的思路吗?Java

 最近老师上课在讲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表达式的返回值做为参数