[JAVA] Grundlegende funktionale Schnittstelle, die in 3 Minuten verstanden werden kann

Einführung

Dieser Artikel ist ein Artikel, der ein Implementierungsbeispiel einer grundlegenden Funktionsschnittstelle vorstellt.

Normalerweise würde ich es in einem Lambda-Ausdruck implementieren oder in einem Stream verwenden, aber der Einfachheit halber wage ich es, eine vertraute Methode zu verwenden, anstatt sie zu verwenden.

Ich wünschte, ich könnte das Gefühl bekommen, dass "Methoden in Variablen gehen". (Genau genommen ist es eine Klasse)

Im Paket java.util.function sind 43 Funktionsschnittstellen definiert, es sind jedoch vier Grundlagen zu beachten. Abgesehen von diesen vier kann man davon ausgehen, dass es sich um erweiterte Typen handelt.

Supplier Jemand, der etwas hat und es mir gibt. Die abstrakte Methode ist get. Kein Argument mit Rückgabewert.

import java.time.LocalDateTime;
import java.util.function.Supplier;

public class Main {
    public static void main(String[] args) {
        Supplier<LocalDateTime> s = LocalDateTime::now;
        System.out.println(s.get()); // -> 2017-01-11T16:29:08.086
    }
}

Consumer Eine Person, die verarbeitet, was Sie erhalten. Die abstrakte Methode ist akzeptieren. Mit Argumenten kein Rückgabewert.

import java.util.function.Consumer;

public class Main {
    public static void main(String[] args) {
        Consumer<String> c = System.out::println;
        c.accept("test"); // -> test
    }
}

Predicate Eine Person, die die Wahrheit über das zurückgibt, was sie erhalten hat. Die abstrakte Methode ist Test. Mit Argument, mit Rückgabewert (nur Boolescher Wert).

import java.util.function.Predicate;

public class Main {
    public static void main(String[] args) {
        Predicate<String> p = ""::equals;
        System.out.println(p.test("foo")); // -> false
    }
}

Function Eine sogenannte Funktion, die verarbeitet und zurückgibt, was Sie erhalten. Die abstrakte Methode wird angewendet. Es gibt ein Argument und einen Rückgabewert.

import java.util.function.Function;

public class Main {
    public static void main(String[] args) {
        Function<String, Integer> f = Integer::parseInt;
        System.out.println(f.apply("55") + 45); // -> 100
    }
}

Recommended Posts

Grundlegende funktionale Schnittstelle, die in 3 Minuten verstanden werden kann
Einführung in Rakefile, die in ca. 10 Minuten durchgeführt werden kann
Java (Super Beginner Edition), das in 180 Sekunden verstanden werden kann
Objektorientiert, das von Feen verstanden werden kann
Schreiben einer Klasse, die in Java bestellt werden kann Ein kleines Standard-Memo
Praktische Tastenkombinationen für Eclipse
Liste der Geräte, die mit Swift UI in der Vorschau angezeigt werden können
Erstellen Sie eine JAR-Datei, die auf Gradle ausgeführt werden kann
Referenznotiz / In-Memory-LDAP-Server, der in Java eingebettet werden kann
Zusammenfassung von ORM "uroboroSQL", das in Enterprise Java verwendet werden kann
Nachahmung der funktionalen Schnittstelle von Java mit Kotlin
SwiftUI-Ansicht, die in Kombination mit anderen Frameworks verwendet werden kann
[Android Studio] Beschreibung, die kontinuierlich in die SQLite-Datenbank eingegeben werden kann [Java]
Melden Sie eine CSV-Datei ab, die von Excel mithilfe von Logback gelesen werden kann
Technologie-Auszug, mit dem EC-Sites in Java-Schulungen erstellt werden können
Ich wusste nicht, dass innere Klassen in der [Java] -Schnittstelle definiert werden können
[Ruby] Grundlegender Schlüssel, um beim Refactoring stark zu sein
Organisieren Sie Methoden, die mit StringUtils verwendet werden können
Die Geschichte, dass der Port im Spring-Boot-Beispielprogramm unbrauchbar wird