🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
### 函数式接口 接口中只有一个抽象方法的接口,称为函数式接口。 可以使用@FunctionalInterface注解修饰 会检查是否是函数式接口。 ### 四大核心函数式接口 #### 1.Consumer 消费型接口 ```java @FunctionalInterface public interface Consumer<T> { void accept(T t); } ``` #### 2.Predicate 预言型接口 ```java @FunctionalInterface public interface Predicate<T>{ boolean test(T t); } ``` #### 3.Supplier 供给型接口 ```java @FunctionalInterface public interface Supplier<T> { T get(); } ``` #### 4.Function 函数型接口 ```java @FunctionalInterface public interface Function<T, R> { R apply(T t); } ``` * * * * * **附:当一段代码里面只有方法不一样时 要考虑使用高阶函数进行处理** 其实lamdba代替的角色就是事前不知道一个接口中具体该执行怎样的代码逻辑,倘若要实现不同的逻辑需要实现这个接口,现在就是把实现的逻辑放到一个lamdba中。当lamdba代替那个接口的具体实现类。 ```java Integer num = getValue(5, Math::abs); Integer num_1 = getValue(5, t -> (t + 3) * 5); private static <T, R> R getValue(T num, Function<T, R> function) { return function.apply(num); } ```