Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Java

Java 8 - Interfaces Funcionais


As interfaces funcionais têm uma única funcionalidade para exibir. Por exemplo, uma interface Comparable com um único método ‘compareTo’ é usada para fins de comparação. O Java 8 definiu muitas interfaces funcionais para serem usadas extensivamente em expressões lambda. A seguir está a lista de interfaces funcionais definidas no pacote java.util.Function.

Nº Sr. Interface e descrição
1
BiConsumidor

Representa uma operação que aceita dois argumentos de entrada e não retorna nenhum resultado.
2
BiFunção

Representa uma função que aceita dois argumentos e produz um resultado.
3
Operador Binário

Representa uma operação sobre dois operandos do mesmo tipo, produzindo um resultado do mesmo tipo dos operandos.
4
BiPredicado

Representa um predicado (função com valor booleano) de dois argumentos.
5
BooleanFornecedor

Representa um fornecedor de resultados com valor booleano.
6
Consumidor

Representa uma operação que aceita um único argumento de entrada e não retorna nenhum resultado.
7
DoubleBinaryOperator

Representa uma operação sobre dois operandos de valor duplo e produzindo um resultado de valor duplo.
8
Duplo Consumidor

Representa uma operação que aceita um único argumento de valor duplo e não retorna nenhum resultado.
9
DoubleFunction

Representa uma função que aceita um argumento de valor duplo e produz um resultado.
10
DoublePredicate

Representa um predicado (função de valor booleano) de um argumento de valor duplo.
11
Duplo Fornecedor

Representa um fornecedor de resultados de valor duplo.
12
Função DoubleToInt

Representa uma função que aceita um argumento de valor duplo e produz um resultado de valor int.
13
Função DoubleToLong

Representa uma função que aceita um argumento de valor duplo e produz um resultado de valor longo.
14
DoubleUnaryOperator

Representa uma operação em um único operando de valor duplo que produz um resultado de valor duplo.
15
Função

Representa uma função que aceita um argumento e produz um resultado.
16
IntBinaryOperator

Representa uma operação em dois operandos com valor int e produz um resultado com valor int.
17
IntConsumidor

Representa uma operação que aceita um único argumento com valor int e não retorna nenhum resultado.
18
IntFunction

Representa uma função que aceita um argumento de valor int e produz um resultado.
19
IntPredicate

Representa um predicado (função com valor booleano) de um argumento com valor int.
20
IntFornecedor

Representa um fornecedor de resultados com valor int.
21
FunçãoIntToDouble

Representa uma função que aceita um argumento de valor int e produz um resultado de valor duplo.
22
Função IntToLong

Representa uma função que aceita um argumento de valor int e produz um resultado de valor longo.
23
IntUnaryOperator

Representa uma operação em um único operando com valor int que produz um resultado com valor int.
24
LongBinaryOperator

Representa uma operação em dois operandos de valor longo e produz um resultado de valor longo.
25
LongoConsumidor

Representa uma operação que aceita um único argumento de valor longo e não retorna nenhum resultado.
26
LongFunction

Representa uma função que aceita um argumento de valor longo e produz um resultado.
27
LongPredicate

Representa um predicado (função de valor booleano) de um argumento de valor longo.
28
LongoFornecedor

Representa um fornecedor de resultados de longo valor.
29
LongToDoubleFunction

Representa uma função que aceita um argumento de valor longo e produz um resultado de valor duplo.
30
LongToIntFunction

Representa uma função que aceita um argumento de valor longo e produz um resultado de valor int.
31
LongUnaryOperator

Representa uma operação em um único operando de valor longo que produz um resultado de valor longo.
32
ObjDoubleConsumer

Representa uma operação que aceita um argumento com valor de objeto e um argumento de valor duplo e não retorna nenhum resultado.
33
ObjIntConsumer

Representa uma operação que aceita um argumento com valor de objeto e um argumento com valor int e não retorna nenhum resultado.
34
ObjLongConsumidor

Representa uma operação que aceita um argumento com valor de objeto e um argumento de valor longo e não retorna nenhum resultado.
35
Predicado

Representa um predicado (função com valor booleano) de um argumento.
36
Fornecedor

Representa um fornecedor de resultados.
37
ToDoubleBiFunction

Representa uma função que aceita dois argumentos e produz um resultado de valor duplo.
38
ToDoubleFunction

Representa uma função que produz um resultado de valor duplo.
39
ToIntBiFunction

Representa uma função que aceita dois argumentos e produz um resultado com valor int.
40
ToIntFunction

Representa uma função que produz um resultado com valor int.
41
ToLongBiFunction

Representa uma função que aceita dois argumentos e produz um resultado de valor longo.
42
ToLongFunction

Representa uma função que produz um resultado de valor longo.
43
Operador Unário

Representa uma operação em um único operando que produz um resultado do mesmo tipo que seu operando.

Exemplo de interface funcional


A interface de predicado é uma interface funcional com um método test(Object) para retornar um valor booleano. Essa interface significa que um objeto é testado para ser verdadeiro ou falso.

Crie o seguinte programa Java usando qualquer editor de sua escolha em, digamos, C:\> JAVA.

Java8Tester.java

Demonstração ao vivo
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 is passed as parameter to test method of Predicate interface
      // test method will always return true no matter what value n has.
		
      System.out.println("Print all numbers:");
		
      //pass n as parameter
      eval(list, n->true);
		
      // Predicate<Integer> predicate1 = n -> n%2 == 0
      // n is passed as parameter to test method of Predicate interface
      // test method will return true if n%2 comes to be zero
		
      System.out.println("Print even numbers:");
      eval(list, n-> n%2 == 0 );
		
      // Predicate<Integer> predicate2 = n -> n > 3
      // n is passed as parameter to test method of Predicate interface
      // test method will return true if n is greater than 3.
		
      System.out.println("Print numbers greater than 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 + " ");
         }
      }
   }
}

Aqui passamos pela interface Predicate, que recebe uma única entrada e retorna Boolean.

Verifique o resultado


Compile a classe usando javac compilador da seguinte forma -
C:\JAVA>javac Java8Tester.java

Agora execute o Java8Tester da seguinte forma -
C:\JAVA>java Java8Tester

Deve produzir a seguinte saída -
Print all numbers:
1
2
3
4
5
6
7
8
9
Print even numbers:
2
4
6
8
Print numbers greater than 3:
4
5
6
7
8
9

Java

  1. Operadores Java
  2. Comentários Java
  3. Java para cada loop
  4. Strings Java
  5. Interface Java
  6. Classe anônima Java
  7. Java try-with-resources
  8. Anotações Java
  9. Asserções Java
  10. Vetor Java