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

Dominando Interfaces Funcionais no Java 8: Guia Completo

Interfaces funcionais têm uma única funcionalidade a exibir. Por exemplo, interface Comparable com método único compareTo é usada para comparação. O Java 8 definiu muitas interfaces funcionais para uso extensivo em expressões lambda. Lista das interfaces em java.util.function:

Nº Interface e Descrição
1BiConsumer<T,U> - Operação que aceita dois argumentos, sem resultado.
2BiFunction<T,U,R> - Função que aceita dois argumentos e produz resultado.
3BinaryOperator<T> - Operação sobre dois operandos do mesmo tipo, resultado do mesmo tipo.
4BiPredicate<T,U> - Predicado (função booleana) de dois argumentos.
5BooleanSupplier - Fornecedor de resultados booleanos.
6Consumer<T> - Operação que aceita um argumento, sem resultado.
7DoubleBinaryOperator - Operação sobre dois operandos double, resultado double.
8DoubleConsumer - Operação que aceita argumento double, sem resultado.
9DoubleFunction<R> - Função que aceita double, produz resultado.
10DoublePredicate - Predicado de um argumento double.
11DoubleSupplier - Fornecedor de resultados double.
12DoubleToIntFunction - Função double -> int.
13DoubleToLongFunction - Função double -> long.
14DoubleUnaryOperator - Operação em um operando double, resultado double.
15Function<T,R> - Função que aceita um argumento, produz resultado.
16IntBinaryOperator - Operação sobre dois int, resultado int.
17IntConsumer - Operação que aceita int, sem resultado.
18IntFunction<R> - Função que aceita int, produz resultado.
19IntPredicate - Predicado de um argumento int.
20IntSupplier - Fornecedor de resultados int.
21IntToDoubleFunction - Função int -> double.
22IntToLongFunction - Função int -> long.
23IntUnaryOperator - Operação em um operando int, resultado int.
24LongBinaryOperator - Operação sobre dois long, resultado long.
25LongConsumer - Operação que aceita long, sem resultado.
26LongFunction<R> - Função que aceita long, produz resultado.
27LongPredicate - Predicado de um argumento long.
28LongSupplier - Fornecedor de resultados long.
29LongToDoubleFunction - Função long -> double.
30LongToIntFunction - Função long -> int.
31LongUnaryOperator - Operação em um operando long, resultado long.
32ObjDoubleConsumer<T> - Operação que aceita objeto e double, sem resultado.
33ObjIntConsumer<T> - Operação que aceita objeto e int, sem resultado.
34ObjLongConsumer<T> - Operação que aceita objeto e long, sem resultado.
35Predicate<T> - Predicado (função booleana) de um argumento.
36Supplier<T> - Fornecedor de resultados.
37ToDoubleBiFunction<T,U> - Função que aceita dois argumentos, produz double.
38ToDoubleFunction<T> - Função que produz double.
39ToIntBiFunction<T,U> - Função que aceita dois argumentos, produz int.
40ToIntFunction<T> - Função que produz int.
41ToLongBiFunction<T,U> - Função que aceita dois argumentos, produz long.
42ToLongFunction<T> - Função que produz long.
43UnaryOperator<T> - Operação em um operando, resultado do mesmo tipo.

Exemplo de Interface Funcional

Predicate<T> é interface funcional com método test(Object) retornando boolean. Significa que um objeto é testado para true/false.

Java8Tester.java

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);

        System.out.println("Print all numbers:");
        eval(list, n -> true);

        System.out.println("Print even numbers:");
        eval(list, n -> n % 2 == 0);

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

Resultado

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

Passamos interface Predicate, que recebe entrada única e retorna boolean, para filtrar a lista de formas diferentes.

Java

  1. Dominando Operadores Java: Tipos, Sintaxe e Exemplos Práticos
  2. Comentários em Java: Tipos, Uso e Boas Práticas
  3. Dominando o Loop for Aprimorado em Java: Sintaxe, Exemplos e Boas Práticas
  4. Dominando Strings em Java: Criação, Métodos e Boas Práticas
  5. Dominando Interfaces em Java: Conceitos, Implementação e Boas Práticas
  6. Dominando Classes Internas Anônimas em Java: Definição, Sintaxe e Exemplos Práticos
  7. Dominando Try-With-Resources em Java: Gerenciamento Automático de Recursos Explicado
  8. Anotações em Java Explicadas: Tipos, Posicionamento e Exemplos Práticos
  9. Asserções em Java: Guia Prático para Detectar Bugs e Garantir Confiabilidade do Código
  10. Entendendo o Java Vector: Uso, Recursos e Comparação com ArrayList