vlambda博客
学习文章列表

Java新特性解读JDK8之函数式接口Function

韩寒 - 奉献.mp3 From 227decision 03:42

上一篇文章介绍了自定义Lambda接口,使用Lambda表达式必须要先自定义函数式接口,这样不方便;jdk8内置了许多函数式接口提供我们使用,基本上不需要再定义新的函数式接口。

jdk8内置了四大核心函数式接口:Consumer<T>,Supplier<T>,Function<T, R>,Predicate<T>。

首先介绍Function<T, R>,T:入参类型,R:返回类型,源码如下:

package java.util.function;import java.util.Objects;/** * Represents a function that accepts one argument and produces a result. * * <p>This is a <a href="package-summary.html">functional interface</a> * whose functional method is {@link #apply(Object)}. * * @param <T> the type of the input to the function * @param <R> the type of the result of the function * * @since 1.8 */@FunctionalInterfacepublic interface Function<T, R> { /** * Applies this function to the given argument. * * @param t the function argument * @return the function result */ R apply(T t);}

Function使用

package com.example.functionalinterfacedemo;import java.util.function.Function;public class FunctionDemo implements Function<Object, Object>{ /** *自定义 实现Function接口,重写方法apply() *仅作介绍方便理解,不作为常规使用方式 */ @Override public Object apply(Object t) { return t+",function apply()处理后"; }  public static void main(String[] args) {    System.out.println(new FunctionDemo().apply("test")); //常规使用 Function<Integer, Integer> function=input->input*10; System.out.println(function.apply(10)); }}