Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 24226|Resposta: 1

[Fonte] Explicação detalhada das interfaces funcionais comuns (delegados) em Java

[Copiar link]
Publicado em 16/09/2021 09:28:21 | | | |
A API JDK 1.8 inclui muitas interfaces funcionais embutidas, como as interfaces Comparador ou Executável comumente usadas no Java antigo, que adicionam @FunctionalInterface anotações para que possam ser usadas em lambdas. Agora, vamos realmente entender isso a partir da entrada das funções comuns em Função.

nometipodescrição
ConsumidorConsumidor< T >Recebe objetos T, não retorna valores
PredicadoPredicado< T >Recebe o objeto T e retorna o booleano
FunçãoFunção< T, R >Recebe o objeto T e retorna o objeto R
FornecedorFornecedor< T >Forneça T objetos (por exemplo, plantas) sem aceitar valores
UnaryOperatorUnaryOperatorRecebe o objeto T e retorna o objeto T
OperadorBinárioOperadorBinárioReceber dois objetos T e devolver objetos T


Uma interface rotulada como FunctionalInterface é chamada de interface funcional, que só pode ter um método personalizado, mas pode incluir métodos herdados da classe objeto. Se uma interface tiver apenas um método, o compilador pensará que ela é uma interface funcional. Se é uma interface funcional ou não, os seguintes pontos precisam ser observados:


  • A anotação só pode ser marcada em interfaces com "Existe apenas um método abstrato".
  • Os métodos estáticos e padrão na interface JDK8 não são métodos abstratos.
  • A interface herda java.lang.Object por padrão, então se a interface mostrar que a declaração sobrepõe o método no Object, ela não é considerada um método abstrato.
  • A anotação não é obrigatória e, se uma interface atende à definição de "interface funcional", ela não tem efeito se a anotação é adicionada ou não. Além disso, a anotação permite que o compilador verifique melhor. Se você escrever uma interface não funcional, mas adicionar @FunctionInterface, o compilador reportará um erro.
  • Definir dois métodos personalizados em uma interface resultará em uma anotação '@FunctionalInterface' inválida; FunctionalInterfaceTest não é um erro funcional de interface.


java.util.function Ele contém várias classes para suportar a programação funcional do Java, e as interfaces funcionais deste pacote são:

número de série
Interface & Descrição
1BiConsumidor<T,U>
Representa uma ação que aceita dois parâmetros de entrada e não retorna resultados
2BiFunção<T,U,R>
Representa um método que aceita dois parâmetros de entrada e retorna um resultado
3OperadorBinário<T>
representa uma ação que atua sobre dois operadores do mesmo tipo e retorna o resultado do mesmo tipo de operador
4BiPredicate<T,U>
Representa um método de valor booleano com dois parâmetros
5BooleanSupplier
Representa o provedor do resultado do valor booleano
6Consumidor<T>
Representa uma operação que aceita um parâmetro de entrada e não retorna nada
7OperadorDuploBinário
representa uma ação que atua sobre dois operadores de valor duplo e retorna o resultado de um valor duplo.
8DoubleConsumer
Representa uma ação que aceita um parâmetro de valor duplo e não retorna um resultado.
9DoubleFunction<R>
Representa um método que aceita um parâmetro de valor duplo e retorna o resultado
10DuploPredicado
Representa um método de valor booleano com um parâmetro de valor duplo
11DoubleSupplier
Representa o provedor de uma estrutura de valor duplo
12DoubleToIntFunction
Aceita uma entrada de tipo duplo e retorna um resultado do tipo int.
13DoubleToLongfunction
Aceita uma entrada de tipo duplo e retorna um resultado de tipo longo
14DoubleUnaryOperator
Aceite um parâmetro do mesmo tipo duplo, e o valor de retorno também é duplo.
15Função<T,R>
Aceita um parâmetro de entrada, retorna um resultado.
16IntBinaryOperator
Aceite ambos os parâmetros do tipo int e retorne valor do tipo int.
17IntConsumer
Aceita um parâmetro de entrada do tipo int sem valor de retorno.
18IntFunction<R>
Aceita um parâmetro de entrada do tipo int e retorna um resultado.
19IntPredicate
: Aceita um parâmetro de entrada int e retorna um resultado booleano.
20IntSupplier
Sem parâmetros, retorna um resultado do tipo int.
21IntToDoubleFunction
Aceita uma entrada do tipo int e retorna um resultado de tipo duplo.
22IntToLongfunction
Aceita uma entrada do tipo int e retorna um resultado de tipo longo.
23IntUnaryOperator
Aceite um parâmetro do tipo int, e retorne o valor do tipo também int.
24LongBinaryOperator
Aceite ambos os parâmetros de tipo longo e valor de retorno tipo como long.
25LongConsumer
Aceitar um parâmetro de entrada do tipo longo, sem valor de retorno.
26LongFunction<R>
Aceita um parâmetro de entrada de tipo longo e retorna um resultado.
27LongPredicate
R aceita um parâmetro de entrada longo e retorna um resultado do tipo booleano.
28LongSupplier
Sem parâmetro, retorna um resultado de tipo longo.
29LongToDoubleFunction
Aceita uma entrada de tipo longo e retorna um resultado de tipo duplo.
30LongToIntFunction
Aceita uma entrada de tipo longo e retorna um resultado do tipo int.
31LongUnaryOperator
Aceite um parâmetro do mesmo tipo que longo, e retorne o valor de que o tipo também é longo.
32ObjDoubleConsumer<T>
Aceite um tipo de objeto e um parâmetro de entrada de tipo duplo sem valor de retorno.
33ObjIntConsumer<T>
Aceite parâmetros de entrada do tipo objeto e tipo int sem valor de retorno.
34ObjLongConsumer<T>
Aceita parâmetros de entrada do tipo objeto e tipo longo sem devolver valores.
35Predicado<T>
Aceita um parâmetro de entrada e retorna um resultado booleano.
36Fornecedor<T>
Sem parâmetros, retorna um resultado.
37ToDoubleBiFunction<T,U>
Aceita dois parâmetros de entrada e retorna um resultado de tipo duplo
38ParaDobraFunção<T>
Aceita um parâmetro de entrada e retorna um resultado de tipo duplo
39ParaIntBiFunção<T,U>
Aceite dois parâmetros de entrada e retorne um resultado do tipo int.
40ToIntFunction<T>
Aceite um parâmetro de entrada e retorne um resultado do tipo int.
41Para LongBiFunção<T,U>
Aceite dois parâmetros de entrada e retorne um resultado do tipo longo.
42ToLongFunction<T>
Aceite um parâmetro de entrada e retorne um resultado de tipo longo.
43UnaryOperator<T>
Aceite um parâmetro do tipo T e retorne o valor do tipo T.


EuA interface funcional em Java é o delegado em .NET/C#, passa o método como parâmetro, da seguinte forma:

Introdução aos delegados em C# (delegar, Ação, Func, predicado)
https://www.itsvse.com/thread-4658-1-1.html

Métodos e Práticas Comuns de Função

//将Function对象应用到输入的参数上,然后返回计算结果。
R apply(T t);

Embora Função< T, R > recebam T objetos, retornem R objetos, e apenas um recebe e retorna objetos, mas combinados com tuplas, múltiplos valores de entrada e retorno possam ser alcançados, refere-se:


Exemplo 1: Passar dois valores e somá-los

Você pode usar escrita simples e expressões lambda, o código é o seguinte:





Exemplo 2:

e método Then



Método Compose



Código completo



Resultados dos retornos



(Fim)




Anterior:Solução de exceção Java FeignClient Interface para múltiplos nomes de serviço idênticos
Próximo:projeto maven \target\classes\META-INF\MANIFEST. MF (sistema...
Publicado em 19/09/2021 19:34:22 |
Java também procurou, embora não seja usado
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com