规则树
public interface StrategyHandler <T, D, R>{
StrategyHandler DEFAULT = (T, D) -> null;
R apply(T requestParameter, D dynamicContext) throws Exception;
}
StrategyHandler是一个函数式接口(只有一个抽象方法apply),而 lambda 表达式只能用来实现函数式接口的抽象方法。- 当你写
(T, D) -> null时,编译器会根据上下文推断出:这个 lambda 表达式需要赋值给StrategyHandler类型的变量(即DEFAULT)。 - 由于
StrategyHandler中只有apply这一个抽象方法,编译器会自动将 lambda 表达式与apply方法关联 ——lambda 的参数列表(T, D)对应apply的参数(T requestParameter, D dynamicContext),lambda 的返回值(null)对应apply的返回值R。