Heim > Java > javaLernprogramm > Hauptteil

Neue Funktionen von Java 8: Detaillierte Erläuterung der integrierten Funktionsschnittstellen

高洛峰
Freigeben: 2017-01-23 15:31:49
Original
1175 Leute haben es durchsucht

Java 8 bietet neue Funktionen und eine integrierte Funktionsschnittstelle

In einem früheren Blogbeitrag, Lambda-Ausdruck, habe ich die von Java 8 bereitgestellte Funktionsschnittstelle erwähnt. In diesem Artikel stellen wir die vier grundlegendsten Funktionsschnittstellen in Java 8 vor

Streng genommen muss für Methodenreferenzen eine Schnittstelle definiert werden. Egal wie wir vorgehen, es gibt nur vier Schnittstellen, die tatsächlich bedienbar sind.

Java 8 stellt das Funktionsschnittstellenpaket java.util.function.* bereit, unter dem es in Java 8 viele integrierte Funktionsschnittstellen gibt. Im Grunde gibt es aber vier grundlegende:

Funktionsschnittstelle (Funktion)

Nimmt T als Eingabe und gibt R als Ausgabe zurück. Es enthält auch Kombinationen mit anderen Funktionen.

@FunctionalInterface
public interface Function<T, R> {
 
  R apply(T t);
 
}
Nach dem Login kopieren

Beispielcode

public static void main(String[] args) {
     
    // 这里用到了Java8的 方法引用,功能型函数式接口!
    Function<String,Boolean> function = "Hello Java" :: endsWith;
    System.out.println(function.apply("Java"));
}
Nach dem Login kopieren

Nehmen Sie T als Eingabe und geben Sie nichts zurück, was die Operation an einem einzelnen Parameter anzeigt.


Beispielcode
@FunctionalInterface
public interface Consumer<T> {
 
  void accept(T t);
 
}
Nach dem Login kopieren

Lieferantenschnittstelle (Lieferant)
class TestDemo{
  //此方法没有返回值,但是有输入参数
  public void fun(String str){
    System.out.println(str);
  }
}
 
 
public class TestFunctional {
  public static void main(String[] args) {
    TestDemo demo = new TestDemo();
    //消费型接口,只有输入参数,没有输出参数
    Consumer<String> consumer = demo :: fun;
    consumer.accept("");
 
  }
}
 
<br>
Nach dem Login kopieren

Keine Eingabeparameter, nur T gibt Ausgabe zurück


Beispielcode

@FunctionalInterface
public interface Supplier<T> {
 
  T get();
 
}
Nach dem Login kopieren

Assertionstyp Schnittstelle (Prädikat)

public class TestFunctional {
  public static void main(String[] args) {
 
    //供应商类型接口,只有输出参数,没有输入参数!
    Supplier<String> supplier = "java 8" :: toUpperCase;
    System.out.println(supplier.get());
  }
}
Nach dem Login kopieren
nimmt T als Eingabe und gibt einen booleschen Wert als Ausgabe zurück. Die Schnittstelle enthält eine Vielzahl von Standardmethoden, um Prädikat in andere komplexe Logik (AND, OR, NOT) zu kombinieren.


Beispielcode

@FunctionalInterface
public interface Predicate<T> {
 
  boolean test(T t);
 
}
Nach dem Login kopieren
Daher wird er in Java 8 aufgrund der Existenz der oben genannten vier Funktionsschnittstellen im Allgemeinen selten von Benutzern verwendet . Definieren Sie neue funktionale Schnittstellen!

Vielen Dank fürs Lesen, ich hoffe, es kann Ihnen helfen, vielen Dank für Ihre Unterstützung dieser Website!

Weitere neue Funktionen von Java 8 und detaillierte Erklärungen der integrierten Funktionsschnittstellen finden Sie auf der chinesischen PHP-Website für verwandte Artikel!
  public class TestFunctional {
  public static void main(String[] args) {
     
    //断言类型接口。有输入参数,输出参数为布尔值
    Predicate<String> predicate = "Android" :: equalsIgnoreCase;
    System.out.println(predicate.test("android"));
     
  }
}      
Nach dem Login kopieren
Verwandte Etiketten:
Quelle:php.cn
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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!