其他分享
首页 > 其他分享> > 函数式接口:Function

函数式接口:Function

作者:互联网

Function接口

Function接口在java中主要用来转换类型
通过调用apply方法将T类型转换为R类型

抽象方法:apply

R apply(T var1);

代码样例

public class Main {
    public static void main(String[] args) {
        String str = "13523";
        Integer i = test(str, (t) -> {
            return Integer.parseInt(str);
        });
        System.out.println("i的value: " + i);
    }
    public static <T, R> R test(T t, Function<T, R> f) {
        return f.apply(t);
    }
}

输出结果

i的value: 13523

default方法:andThen

default <V> Function<T, V> andThen(Function<? super R, ? extends V> after) {
    Objects.requireNonNull(after);
    return (t) -> {
        return after.apply(this.apply(t));
    };
}

代码样例

public class Main {
    public static void main(String[] args) {
        Function<String, Integer> f1 = (t) -> {
            return Integer.parseInt(t);
        };
        Function<Integer, String> f2 = (t) -> {
            return String.valueOf(t);
        };
        String str = "13523";
        String str1 = test(str, f1.andThen(f2));
        System.out.println("str1的value: " + str1);
    }
    public static <T, R> R test(T t, Function<T, R> f) {
        return f.apply(t);
    }
}

输出结果

str1的value: 13523

String -> Integer -> String

default方法:compose

default <V> Function<V, R> compose(Function<? super V, ? extends T> before) {
    Objects.requireNonNull(before);
    return (v) -> {
        return this.apply(before.apply(v));
    };
}

与andThen刚好相反,先根据入参Function执行类型转换,然后再根据当前Function执行类型转换。

代码样例

public class Main {
    public static void main(String[] args) {
        Function<String, Integer> f1 = (t) -> {
            return Integer.parseInt(t);
        };
        Function<Integer, String> f2 = (t) -> {
            return String.valueOf(t);
        };
        Integer i = 13523;
        Integer i1 = test(i, f1.compose(f2));
        System.out.println("i1的value: " + i1);
    }
    public static <T, R> R test(T t, Function<T, R> f) {
        return f.apply(t);
    }
}

输出结果

i1的value: 13523

Integer -> String -> Integer

其他方法

static <T> Function<T, T> identity() {
    return (t) -> {
        return t;
    };
}

标签:Function,return,函数,接口,Integer,apply,public,String
来源: https://www.cnblogs.com/buzuweiqi/p/16585935.html