课时132:内建函数式接口
摘要:在JDK 1.8之中提供有 Lambda 表达式和方法引用,但如果由开发者来定义函数式接口,需要使用“@FunctionalInterface”注解进行大量声明,于是为了方便则可以直接引用系统中的函数式接口。
在系统中专门提供有一个 java.util.function 的开发包,里面可以直接使用函数式接口,共有如下几个核心接口供我们使用。
1. 功能性函数式接口
2. 消费型函数接口
3. 供给型函数式接口
4. 断言型函数接口
01. 功能性函数式接口
1.1 接口定义
在String类中有一个方法判断是否以指定的字符串开头:public boolean startsWith(String str)。
开发包中带有“Function”后缀,@FunctionalInterface
Public Interface Function<T,R>
接口使用:
import java.util.function.*, Public class JavaDemo{ Public static Void main(String args[]){ Function<String,Boolean>fun=”**Hello”::startsWith; System.out.println(fun.apply(”**”)); } }
执行结果
02. 消费型函数接口
2.1 接口定义:
指的是只能进行数据的处理操作,没有任何的返回;在进行系统数据处理输出的时候使用的是:
System.out.println(); @FunctionalInterface Public interface Consumer<T>{ Public Void accept(T t); 接口使用: import java.util.function.*; Public class JavaDemo { Public static void main(String args[]){ Consumer<String> con =System.out::println; Con.accept(”www.mldn.cn”); } }
执行结果
03. 供给型函数式接口:
3.1接口定义
在String累中提供有转小写方法,没有接收参数,但是有返回值;
方法:
public String toLowerCase(); @FunctionalInterface Public internface Supplier<T>{ Public T get(); 接口使用:import java.util.function.*; Public class JavaDemo { Public static void main(string args【】){ Supplier<string> sup =www.MLDNJAVA.cn::toLowerCase; System.out.println(suo.get()); } }
执行结果:
04. 断言型函数接口
4.1接口定义: 进行判断处理
在String类有一个equalsIgnoreCase()方法
@FunctionalInterface Pablic interface Predicate<T>{ Public Boolean test(T t) ; }
接口使用:
import java.util.function.*; Public class JavaDemo{ Public static void main(String args[]){ Predicate<String>pre = “mldn”:: equalsIgnoreCase; System.out.println(pre.test(“MLDN”)); } }
执行结果
总结:以后对于实际项目开发之中,如果JDK本身的函数式接口可以被使用,那么就没有必要进行定义。