Lambda 表达式需要“函数式接口”的支持
接口中只有一个抽象方法的接口叫 函数式接口
比如:
package com.lm; //函数式接口修饰 @FunctionalInterface public interface MyFun { public Integer getValue(Integer num); }可以用注解@FunctionalInterface //函数式接口,这时接口中就只能定义一个方法
package com.lm; //接口泛型 @FunctionalInterface //函数式接口,只能有一个方法 public interface MyPredicate<T> { //传对象判断实现 public boolean test(T t); }
这时就不用加写个方法,乘写个方法了!
package com.lm; import org.junit.Test; public class TestLambda8 { //需求: 对一个数进行运算 @Test public void test1() { Integer num = operation(100, (x) -> x * x); System.out.println(num); System.out.println("--------------------------"); Integer num2 = operation(100, (x) -> x + 100); System.out.println(num2); } public Integer operation(Integer num, MyFun mf) { return mf.getValue(num); } }