Maison > Java > javaDidacticiel > Nouvelles fonctionnalités de Java 8 : explication détaillée des interfaces fonctionnelles intégrées

Nouvelles fonctionnalités de Java 8 : explication détaillée des interfaces fonctionnelles intégrées

高洛峰
Libérer: 2017-01-23 15:31:49
original
1268 Les gens l'ont consulté

Nouvelle fonctionnalité intégrée à Java 8

Dans un article de blog précédent, Expression Lambda, j'ai mentionné l'interface fonctionnelle fournie par Java 8. Dans cet article, nous présenterons les quatre interfaces fonctionnelles les plus basiques de Java 8

À proprement parler, pour les références de méthodes, une interface doit être définie. Quelle que soit la manière dont nous fonctionnons, seules quatre interfaces sont réellement utilisables.

Java 8 fournit le package d'interface fonctionnelle java.util.function.*, sous lequel se trouvent de nombreuses interfaces fonctionnelles intégrées dans Java 8. Mais il y en a essentiellement quatre de base :

Interface fonctionnelle (Fonction)

prend T comme entrée et renvoie R comme sortie. Elle inclut également des combinaisons avec d'autres fonctions par défaut.

@FunctionalInterface
public interface Function<T, R> {
 
  R apply(T t);
 
}
Copier après la connexion

Exemple de code

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

Prend T comme entrée, ne renvoie rien et représente une opération sur un seul paramètre.


Exemple de code
@FunctionalInterface
public interface Consumer<T> {
 
  void accept(T t);
 
}
Copier après la connexion

Interface fournisseur (Fournisseur)
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>
Copier après la connexion

Aucun paramètre d'entrée, seul T renvoie la sortie


Exemple de code

@FunctionalInterface
public interface Supplier<T> {
 
  T get();
 
}
Copier après la connexion

Type d'assertion interface (Predicate)

public class TestFunctional {
  public static void main(String[] args) {
 
    //供应商类型接口,只有输出参数,没有输入参数!
    Supplier<String> supplier = "java 8" :: toUpperCase;
    System.out.println(supplier.get());
  }
}
Copier après la connexion
prend T comme entrée et renvoie une valeur booléenne en sortie. L'interface contient une variété de méthodes par défaut pour combiner Predicate dans une autre logique complexe (AND, OR, NOT).


Exemple de code

@FunctionalInterface
public interface Predicate<T> {
 
  boolean test(T t);
 
}
Copier après la connexion
Par conséquent, dans Java 8, en raison de l'existence des quatre interfaces fonctionnelles ci-dessus, il est généralement rarement utilisé par les utilisateurs . Définissez de nouvelles interfaces fonctionnelles !

Merci d'avoir lu, j'espère que cela pourra vous aider, merci pour votre soutien à ce site !

Pour plus de nouvelles fonctionnalités de Java 8 et des explications détaillées des interfaces fonctionnelles intégrées, veuillez prêter attention au site Web PHP chinois pour les articles connexes !
  public class TestFunctional {
  public static void main(String[] args) {
     
    //断言类型接口。有输入参数,输出参数为布尔值
    Predicate<String> predicate = "Android" :: equalsIgnoreCase;
    System.out.println(predicate.test("android"));
     
  }
}      
Copier après la connexion
Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal