Rumah >Java >javaTutorial >Cara menggunakan antara muka Fungsi dalam Java8

Cara menggunakan antara muka Fungsi dalam Java8

王林
王林ke hadapan
2023-04-17 21:04:011593semak imbas

Pengenalan kepada antara muka Fungsi dalam Java 8

Java 8 menyediakan antara muka berfungsi Function Antara muka ini bermaksud melaksanakan beberapa operasi pada parameter dan mengembalikan nilai selepas operasi. Antara muka ini mempunyai kaedah abstrak apply, yang menunjukkan operasi pada parameter.

// Java Function 接口的定义
@FunctionalInterface
public interface Function<T, R> {
R apply(T t);

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

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

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

Penggunaan antara muka Fungsi

apply Kaedah ini digunakan seperti berikut:

Function<Integer, Integer> add = p -> p + 10;
Integer result = add.apply(10);
// 这里会输出 20,因为这个函数定义的操作时把参数加上 10 后返回
System.out.println(result);

composeParameter bagi kaedahnya juga merupakan objek Function. Apabila memanggil kaedah Function pada compose A, masukkan objek Function B, dan kemudian dapatkan objek Function baharu C. Logik pelaksanaan objek Function C adalah menggunakan kaedah apply B terlebih dahulu untuk mengendalikan parameter, dan kemudian lulus hasil yang diperoleh sebagai parameter kepada A Functionapply kaedah objek, dan kemudian mengembalikan hasil selepas pelaksanaan. Kaedah

addThen mempunyai prinsip yang sama, kecuali susunan kaedah pelaksanaan dalaman adalah berbeza.

Function<Integer, Integer> multiplyTen = a -> a * 10;
Function<Integer, Integer> addTen = a -> a + 10;
// 先增加 10,然后再乘 10,输出结果 110
Function<Integer, Integer> addTenThenMultiplyTen = multiplyTen.compose(addTen);
System.out.println(addTenThenMultiplyTen.apply(1));

// 先乘 10,然后再加 10,输出结果 20
Function<Integer, Integer> multiplyTenAddTenThen = multiplyTen.andThen(addTen);
System.out.println(multiplyTenAddTenThen.apply(1));

Instance antara muka Fungsi

public class CheckUtils {
    private static final Function<String, String> lengthCheck = params -> {
        if (params.length() > 100) {
            throw new RuntimeException("Length exceed max limit.");
        }
        return params;
    };

    private static final Function<String, String> invalidCharacterCheck = str -> {
        if (!str.matches("^[a-f,A-F]$")) {
            throw new RuntimeException("Contains invalid character.");
        }
        return str;
    };
    /**
     * 这里的公共方法组合了该类中的基本校验逻辑构成一个复合的逻辑
     */
    public static void checkStringLengthAndPhoneNumber(String string) {
        invalidCharacterCheck.compose(lengthCheck).apply(string);
    }
}

Atas ialah kandungan terperinci Cara menggunakan antara muka Fungsi dalam Java8. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam