写在前面
JDK8 API提供了很多函数式接口,这些函数式接口可以被抽象成一个具体的方法,并且使其使用在Lambda表达式中,今天我们要来说的就是其中的Function函数接口。
JDK8函数式接口之Function
Function函数式接口,其中定义了一个apply方法。
Function的全称其实是java.util.function.Function<T, R>, 其中的apply方法需要接收一个泛型为T的参数值,并且执行apply方法完成后,会返回一个泛型为R的结果对象。
在Lambda表达式经常会使用Function函数式接口,比如我们经常使用的map方法,经过map方法的转换,可以将对象中的某个属性进行转换,并且经由Collections方法转换成对应的List集合对象。
我们来说一下如何使用吧,虽然我们在实际开发中单独使用的不太多,但是还是要说一下的。
public static void main(String[] args) { Function<String, Integer> function = x -> Integer.parseInt(x); System.out.println(function.apply("123")); System.out.println(function.apply("123").getClass()); }
执行结果如下图所示:
经过上面的例子,我们就可以看出来,Function函数接口是可以对参数类型进行类型转换,无论是直接转换,还是强制转换。
andThen
andThen方法是Function接口中提供的一个默认方法,其功能就是在原有的基础上进行一个附加函数处理,下面来看一下具体代码示例:
public static void main(String[] args) { Function<String, Integer> function = Integer::parseInt; Function<Integer, Integer> function1 = x -> x + 1; System.out.println(function.andThen(function1).apply("123")); System.out.println(function.andThen(function1).apply("123").getClass()); }
执行结果如下:
总结
今天我们学习了Function函数式接口,使用此函数接口来给对象的数据类型进行了一个转换,也介绍了Function函数接口中的一些特定的方法,大家都学会了吗?