Latest web development tutorials

Java Interface 8 Fonction

Java 8 nouvelles fonctionnalités Java 8 nouvelles fonctionnalités


Fonction Interface (Interface fonctionnelle) est une méthode d'avoir une interface commune.

interface Fonction peut être implicitement converti en une expression lambda.

Interface Fonction peut prendre en charge les fonctions existantes lambda convivial.

Avant JDK 1.8 a une interface de fonction:

  • java.lang.Runnable
  • java.util.concurrent.Callable
  • java.security.PrivilegedAction
  • java.util.Comparator
  • java.io.FileFilter
  • java.nio.file.PathMatcher
  • java.lang.reflect.InvocationHandler
  • java.beans.PropertyChangeListener
  • java.awt.event.ActionListener
  • javax.swing.event.ChangeListener

JDK 1.8 nouvellement ajouté interface de fonction:

  • java.util.function

java.util.function Il contient de nombreuses classes, fonctions pour soutenir la programmation Java, ce paquet d'interfaces fonctionnelles:

Non. Interface et description
1 BiConsumer <T, U>

Il représente une opération qui prend deux paramètres d'entrée, et ne renvoie aucun résultat

2 BiFunction <T, U, R>

Elle représente une méthode accepte deux paramètres d'entrée, et renvoie un résultat

3 BinaryOperator <T>

Agissant pour le compte d'un opérateur dans deux du même type de fonctionnement, et l'opérateur retourne le même type de résultats

4 BiPredicate <T, U>

Elle représente une méthode de la valeur booléenne deux paramètres

5 BooleanSupplier

Il représente la valeur booléenne du résultat du fournisseur

6 Consommateurs <T>

Représente accepte un paramètre d'entrée et aucune opération de retour

7 DoubleBinaryOperator

Il agit au nom de l'opération de l'opérateur deux valeurs doubles, et renvoie les résultats d'une double valeur.

8 DoubleConsumer

Accepte une opération pour le compte d'une double valeur du paramètre, et ne pas retourner un résultat.

9 DoubleFunction <R>

Accepter au nom d'une méthode de paramètre double, et renvoie le résultat

10 DoublePredicate

Il représente une valeur booléenne du paramètre a une méthode de double valeur

11 DoubleSupplier

La valeur représente une structure à double fournisseur

12 DoubleToIntFunction

Accepte une entrée de type double et retourne un résultat int.

13 DoubleToLongFunction

Accepte une entrée de type double et retourne un long type de résultat

14 DoubleUnaryOperator

Accepte un paramètre pour le même type de double, type de retour est également double.

15 Fonction <T, R>

Accepte un paramètre d'entrée et retourne un résultat.

16 IntBinaryOperator

Accepte deux paramètres avec le même type int, le type de valeur de retour est aussi int.

17 IntConsumer

Accepte un des paramètres d'entrée int, aucune valeur de retour.

18 IntFunction <R>

Accepte un paramètre d'entrée de type int, et renvoie un résultat.

19 IntPredicate

: Accepte un paramètre d'entrée int et renvoie une valeur booléenne du résultat.

20 IntSupplier

Aucun argument et renvoie un résultat int.

21 IntToDoubleFunction

Accepte une entrée de type int, et renvoie un résultat de type double.

22 IntToLongFunction

Accepte une entrée de type int, et retourne un long type de résultat.

23 IntUnaryOperator

Accepte un paramètre pour le même type int, le type de valeur de retour est aussi int.

24 LongBinaryOperator

Il accepte deux paramètres avec le même type de longueur, le type de retour pour longtemps.

25 LongConsumer

Il faut beaucoup de type de paramètres d'entrée, aucune valeur de retour.

26 LongFunction <R>

Pour accepter un long type de paramètres d'entrée et retourne un résultat.

27 LongPredicate

R prend un paramètre d'entrée long et retourne un booléen résultats de type valeur.

28 LongSupplier

Aucun paramètre et renvoie une valeur de résultat de type long.

29 LongToDoubleFunction

Pour accepter un long type d'entrée et renvoie un résultat de type double.

30 LongToIntFunction

Pour accepter un long type d'entrée et renvoie un résultat int.

31 LongUnaryOperator

Il accepte un paramètre pour le même type de longueur, le type de retour pour longtemps.

32 ObjDoubleConsumer <T>

Accepte un type d'objet et un double type de paramètres d'entrée, aucune valeur de retour.

33 ObjIntConsumer <T>

Accepte un type d'objet et un des paramètres d'entrée int, aucune valeur de retour.

34 ObjLongConsumer <T>

Accepte un type d'objet et un long type de paramètres d'entrée, aucune valeur de retour.

35 Predicate <T>

Accepte un paramètre d'entrée et retourne un résultat booléen.

36 Fournisseur <T>

Aucun paramètre et renvoie un résultat.

37 ToDoubleBiFunction <T, U>

Il accepte deux paramètres d'entrée et renvoie un résultat de type double

38 ToDoubleFunction <T>

Accepte un paramètre d'entrée et retourne un résultat de type double

39 ToIntBiFunction <T, U>

Il accepte deux paramètres d'entrée et renvoie un résultat de type int.

40 ToIntFunction <T>

Accepte un paramètre d'entrée et retourne un résultat de type int.

41 ToLongBiFunction <T, U>

Il accepte deux paramètres d'entrée et retourne un long type de résultat.

42 ToLongFunction <T>

Accepte un paramètre d'entrée et retourne un long type de résultat.

43 UnaryOperator <T>

Accepter un paramètre de type T, le type de la valeur de retour de T.


instance d'interface fonctionnelle

Predicate <T> est une interface fonctionnelle qui accepte un paramètre d'entrée T, renvoie un résultat booléen.

L'interface contient plusieurs méthodes par défaut seront combinés dans une autre logique de prédicat complexe (par exemple: AND, OR, NOT).

Cette interface est utilisée pour tester les objets sont vraies ou fausses.

Nous pouvons par les exemples suivants (Java8Tester.java) pour comprendre l'interface de fonction prédicat <T> utiliser:

import java.util.Arrays;
import java.util.List;
import java.util.function.Predicate;

public class Java8Tester {
   public static void main(String args[]){
      List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9);
		
      // Predicate<Integer> predicate = n -> true
      // n 是一个参数传递到 Predicate 接口的 test 方法
      // n 如果存在则 test 方法返回 true
		
      System.out.println("输出所有数据:");
		
      // 传递参数 n
      eval(list, n->true);
		
      // Predicate<Integer> predicate1 = n -> n%2 == 0
      // n 是一个参数传递到 Predicate 接口的 test 方法
      // 如果 n%2 为 0 test 方法返回 true
		
      System.out.println("输出所有偶数:");
      eval(list, n-> n%2 == 0 );
		
      // Predicate<Integer> predicate2 = n -> n > 3
      // n 是一个参数传递到 Predicate 接口的 test 方法
      // 如果 n 大于 3 test 方法返回 true
		
      System.out.println("输出大于 3 的所有数字:");
      eval(list, n-> n > 3 );
   }
	
   public static void eval(List<Integer> list, Predicate<Integer> predicate) {
      for(Integer n: list) {
		
         if(predicate.test(n)) {
            System.out.println(n + " ");
         }
      }
   }
}

Mise en œuvre du script ci-dessus, la sortie est:

$ javac Java8Tester.java 
$ java Java8Tester
输出所有数据:
1 
2 
3 
4 
5 
6 
7 
8 
9 
输出所有偶数:
2 
4 
6 
8 
输出大于 3 的所有数字:
4 
5 
6 
7 
8 
9 

Java 8 nouvelles fonctionnalités Java 8 nouvelles fonctionnalités