Latest web development tutorials

Java 8 Funzione Interfaccia

Java 8 nuove funzionalità Java 8 nuove funzionalità


Interfaccia Funzione (interfaccia funzionale) è un metodo di avere un'interfaccia comune.

Interfaccia funzione può essere convertito in modo implicito un'espressione lambda.

Interfaccia funzione può supportare le funzioni esistenti lambda amichevole.

Prima di JDK 1.8 ha una funzione di interfaccia:

  • 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 di recente aggiunto funzione di interfaccia:

  • java.util.function

java.util.function Esso contiene molte classi, funzioni per supportare la programmazione Java, questo pacchetto di interfacce funzionali:

No. Interfaccia e Descrizione
1 BiConsumer <T, U>

Esso rappresenta un'operazione che richiede due parametri di ingresso, e non restituisce alcun risultato

2 BiFunction <T, U, R>

Esso rappresenta un metodo accetta due parametri di input, e restituisce un risultato

3 BinaryOperator <T>

Agendo per conto di un operatore in due dello stesso tipo di operazione, e l'operatore restituisce lo stesso tipo di risultati

4 BiPredicate <T, U>

Esso rappresenta un metodo di valore booleano due parametri

5 BooleanSupplier

Esso rappresenta il valore booleano del risultato del fornitore

6 Consumatori <T>

Rappresenta accetta un parametro di input e nessuna operazione ritorno

7 DoubleBinaryOperator

Essa agisce per conto del funzionamento dell'operatore due valori doppi, e restituisce i risultati di un valore doppio.

8 DoubleConsumer

Accetta un'operazione per conto di un doppio valore del parametro, e non restituisce un risultato.

9 DoubleFunction <R>

Accettazione, a nome di un metodo doppio parametro, e restituisce il risultato

10 DoublePredicate

Esso rappresenta un valore booleano del parametro ha un metodo di valore doppio

11 DoubleSupplier

Valore rappresenta un fornitore di doppia struttura

12 DoubleToIntFunction

Accetta un ingresso di tipo double e restituisce un risultato int.

13 DoubleToLongFunction

Accetta un ingresso di tipo double e restituisce una lunga tipo di risultato

14 DoubleUnaryOperator

Accetta un parametro per lo stesso tipo di doppio, tipo di ritorno è anche doppio.

15 Funzione <T, R>

Accetta un parametro di input e restituisce un risultato.

16 IntBinaryOperator

Accetta due parametri con lo stesso tipo int, il tipo di valore di ritorno è anche int.

17 IntConsumer

Accetta un parametri di input int, senza valore di ritorno.

18 IntFunction <R>

Accetta un parametro di ingresso di tipo int, e restituisce un risultato.

19 IntPredicate

: Accetta un parametro di input int e restituisce un valore booleano del risultato.

20 IntSupplier

Non ci sono argomenti e restituisce un risultato int.

21 IntToDoubleFunction

Accetta un ingresso di tipo int, e restituisce un risultato di tipo double.

22 IntToLongFunction

Accetta un ingresso di tipo int, e restituisce una lunga tipo di risultato.

23 IntUnaryOperator

Accetta un parametro per lo stesso tipo int, il tipo di valore di ritorno è anche int.

24 LongBinaryOperator

Esso accetta due parametri con lo stesso tipo di tempo, tipo di ritorno a lungo.

25 LongConsumer

Ci vuole molto tipo di parametri di input, senza valore di ritorno.

26 LongFunction <R>

Per accettare una lunga tipo di parametri di input e restituisce un risultato.

27 LongPredicate

R prende un parametro di input lungo e restituisce un valore booleano risultati tipo di valore.

28 LongSupplier

Nessun parametro e restituisce un valore risultato di tipo long.

29 LongToDoubleFunction

Per accettare una lunga tipo di input e restituisce un risultato di tipo double.

30 LongToIntFunction

Per accettare una lunga tipo di input e restituisce un risultato int.

31 LongUnaryOperator

Esso accetta un parametro per lo stesso tipo di tempo, tipo di ritorno a lungo.

32 ObjDoubleConsumer <T>

Accetta un tipo di oggetto e un doppio tipo di parametri di input, senza valore di ritorno.

33 ObjIntConsumer <T>

Accetta un tipo di oggetto e di un parametri di input int, senza valore di ritorno.

34 ObjLongConsumer <T>

Accetta un tipo di oggetto e una lunga tipo di parametri di input, senza valore di ritorno.

35 Predicate <T>

Accetta un parametro di input e restituisce un risultato booleano.

36 Fornitore <T>

Non ci sono parametri e restituisce un risultato.

37 ToDoubleBiFunction <T, U>

Esso accetta due parametri di input e restituisce un risultato di tipo double

38 ToDoubleFunction <T>

Accetta un parametro di input e restituisce un risultato di tipo double

39 ToIntBiFunction <T, U>

Esso accetta due parametri di input e restituisce un risultato di tipo int.

40 ToIntFunction <T>

Accetta un parametro di input e restituisce un risultato di tipo int.

41 ToLongBiFunction <T, U>

Si accetta due parametri di input e restituisce una lunga tipo di risultato.

42 ToLongFunction <T>

Accetta un parametro di input e restituisce una lunga tipo di risultato.

43 UnaryOperator <T>

Accetta un parametro di tipo T, il tipo del valore di ritorno per T.


esempio interfaccia funzionale

Predicate <T> interfaccia è un'interfaccia funzionale che accetta un parametro di input T, restituisce un risultato booleano.

L'interfaccia contiene diversi metodi predefiniti verranno combinati in altra logica dei predicati complessi (per esempio: AND, OR, NOT).

Questa interfaccia viene utilizzata per testare gli oggetti sono vere o false.

Possiamo dai seguenti esempi (Java8Tester.java) per capire l'interfaccia funzione predicato <T> uso:

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 + " ");
         }
      }
   }
}

L'attuazione del script di cui sopra, l'uscita è:

$ 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 nuove funzionalità Java 8 nuove funzionalità