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

Cara menggunakan antara muka Fungsi dalam Java8

王林
Lepaskan: 2023-04-17 21:04:01
ke hadapan
1594 orang telah melayarinya

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;
}
Salin selepas log masuk

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);
Salin selepas log masuk

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));
Salin selepas log masuk

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);
    }
}
Salin selepas log masuk

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

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan