Heim > Java > javaLernprogramm > So verwenden Sie die Funktionsschnittstelle in Java8

So verwenden Sie die Funktionsschnittstelle in Java8

王林
Freigeben: 2023-04-17 21:04:01
nach vorne
1680 Leute haben es durchsucht

Einführung in die Funktionsschnittstelle in Java 8

Java 8 bietet eine funktionale Schnittstelle Funktion. Diese Schnittstelle stellt die Ausführung einiger Operationen an einem Parameter und die anschließende Rückgabe der Operation dar. Wert. Diese Schnittstelle verfügt über eine abstrakte Methode apply, die die Operation an den Parametern angibt. Function,这个接口表示对一个参数做一些操作然后返回操作之后的值。这个接口的有一个抽象方法 apply,这个方法就是表明对参数做的操作。

// 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;
}
Nach dem Login kopieren

Function 接口的用法

apply 方法的使用方式如下:

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

compose方法的参数也是一个Function对象。在 A 这个Function上调用compose方法时传入 B 这个Function对象,然后得到一个新的Function对象 C。C 这个Function对象的实现逻辑是先带哦用 B 的apply方法对参数进行操作,将得到的结果再作为参数传递给 A 这个Function对象的apply 法,然后返回执行后的结果。

addThen

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));
Nach dem Login kopieren

Verwendung der Funktionsschnittstelle

apply Die Methode wird wie folgt verwendet:#🎜🎜#
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);
    }
}
Nach dem Login kopieren
#🎜 🎜 Der Parameter der #compose-Methode ist auch ein Function-Objekt. Wenn Sie die compose-Methode für die Function von A aufrufen, übergeben Sie das Function-Objekt von B und erhalten dann eine neue Function /code> Objekt C. Die Implementierungslogik des Function-Objekts von C besteht darin, zuerst die apply-Methode von B zu verwenden, um die Parameter zu bedienen, und dann das Ergebnis als zu verwenden >Parameter werden an die apply-Methode dieses Function-Objekts in A übergeben und dann wird das Ergebnis nach der Ausführung zurückgegeben. #🎜🎜##🎜🎜#Die Methode addThen hat ein ähnliches Prinzip, außer dass die Reihenfolge der internen Ausführungsmethoden unterschiedlich ist. #🎜🎜#rrreee#🎜🎜#Instanz der Funktionsschnittstelle#🎜🎜#rrreee

Das obige ist der detaillierte Inhalt vonSo verwenden Sie die Funktionsschnittstelle in Java8. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage