大函数式接口
新时代程序员必回的四种技能:lambda表达式 函数式接口 链式编程 Stream流式计算
什么是函数式接口?
函数式接口:只有一个方法的接口 有且只有一个方法
Runnable接口就是一个典型的函数式接口
@FunctionalInterface //函数式接口 public interface Runnable { public abstract void run(); //有且只有一个方法 }
foreach的参数也是函数式接口,准确来说是消费形类型的函数式接口
forEach(Consumer<? super E> action)
使用函数式接口有什么优势?
简化编程模型,在新版本框架底层大量应用
四大函数式接口
四大函数式接口都是java.util.function下的
- Function 函数式接口
通过Function源码可以发现,它是一个函数式接口,只有一个方法apply(),而且是传入参数T,返回类型R
创建一个函数式接口Function
public static void main(String[] args){ //匿名内部类 Function function = new Function<String,String>() { @Override public String apply(String str) { return null; } }; }
完善代码
package com.wyh.function; import java.util.function.Function; /** * @program: JUC * @description: 函数式接口 * @author: 魏一鹤 * @createDate: 2022-03-06 15:06 **/ public class demo01 { public static void main(String[] args){ //工具类 输入什么 输出什么 Function function = new Function<String,String>() { @Override public String apply(String str) { return str; } }; System.out.println(function.apply("123")); } }
@FunctionalInterface public interface Function<T, R> { /** * Applies this function to the given argument. * * @param t the function argument * @return the function result */ R apply(T t); }
123
Function的特点:有一个输入参数,有一个输出参数,凡是函数式接口,都可以用lambda表达式进行简化
使用lambda表达式对函数式接口进行简化
//使用lambda表达式对函数式接口进行简化
Function<String,String> function=(str)->{return str;};
System.out.println(function.apply("123"));