Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 24226|Respuesta: 1

[Fuente] Explicación detallada de interfaces funcionales comunes (delegados) en Java

[Copiar enlace]
Publicado en 16/9/2021 9:28:21 | | | |
La API JDK 1.8 incluye muchas interfaces funcionales integradas, como las interfaces Comparador o Ejecutable comúnmente usadas en Java antiguo, que añaden anotaciones @FunctionalInterface para que puedan usarse en lambdas. Ahora, vamos a entenderlo realmente desde la entrada de funciones comunes en la Función.

nombretipodescripción
ConsumidorConsumidor< T >Recibe T objetos, no devuelve valores
PredicadoPredicado< T >Recibe el objeto T y devuelve el booleano
FunciónFunción< T, R >Recibe el objeto T y devuelve el objeto R
ProveedorProveedor< T >Proporciona T objetos (por ejemplo, plantas) sin aceptar valores
UnaryOperatorUnaryOperatorRecibe el objeto T y devuelve el objeto T
Operador binarioOperador binarioRecibir dos objetos T y devolver objetos T


Una interfaz etiquetada como FunctionalInterface se llama interfaz funcional, que solo puede tener un método personalizado, pero puede incluir métodos heredados de la clase objeto. Si una interfaz tiene solo un método, el compilador pensará que es una interfaz funcional. Ya sea que sea una interfaz funcional o no, hay que señalar los siguientes puntos:


  • La anotación solo puede marcarse en interfaces con "Solo hay un método abstracto".
  • Los métodos estáticos y por defecto en la interfaz JDK8 no son métodos abstractos.
  • La interfaz hereda java.lang.Object por defecto, así que si la interfaz muestra que la declaración sobreescribe el método en el Object, no se considera un método abstracto.
  • La anotación no es necesaria, y si una interfaz cumple la definición de "interfaz funcional", no tiene efecto en si se añade o no la anotación. Además, la anotación permite que el compilador lo comprobe mejor. Si escribes una interfaz no funcional pero añades @FunctionInterface, el compilador informará de un error.
  • Definir dos métodos personalizados en una sola interfaz resultará en una anotación de '@FunctionalInterface' Invalid; FunctionalInterfaceTest no es un error de interfaz funcional.


java.util.function Contiene varias clases para soportar la programación funcional de Java, y las interfaces funcionales de este paquete son:

número de serie
Interfaz y descripción
1BiConsumer<T,U>
Representa una acción que acepta dos parámetros de entrada y no devuelve resultados
2BiFunción<T,U,R>
Representa un método que acepta dos parámetros de entrada y devuelve un resultado
3Operador <T>binario
representa una acción que actúa sobre dos operadores del mismo tipo, y devuelve el resultado del mismo tipo de operador
4BiPredicate<T,U>
Representa un método de valores booleanos de dos parámetros
5BooleanSupplier
Representa al proveedor del resultado del valor booleano
6Consumidor<T>
Representa una operación que acepta un parámetro de entrada y no devuelve nada
7OperadorDoubleBinaryOperator
representa una acción que actúa sobre dos operadores de doble valor y devuelve el resultado de un doble valor.
8DoubleConsumer
Representa una acción que acepta un parámetro de valor doble y no devuelve un resultado.
9Doble función<R>
Representa un método que acepta un parámetro de doble valor y devuelve el resultado
10DoblePredicado
Representa un método de valor booleano con un parámetro de doble valor
11DoubleSupplier
Representa al proveedor de una estructura de doble valor
12DoubleToIntFunction
Acepta una entrada de doble tipo y devuelve un resultado de tipo int.
13DoubleToLongFunction
Acepta una entrada de doble tipo y devuelve un resultado de tipo largo
14DoubleUnaryOperator
Acepta un parámetro del mismo tipo doble, y el tipo de valor de retorno también es doble.
15Función<T,R>
Acepta un parámetro de entrada, devuelve un resultado.
16IntBinaryOperator
Acepta ambos parámetros de tipo int y devuelve valor tipo int.
17IntConsumer
Acepta un parámetro de entrada de tipo int sin valor de retorno.
18IntFunction<R>
Acepta un parámetro de entrada de tipo int y devuelve un resultado.
19IntPredicate
: Acepta un parámetro de entrada int y devuelve un resultado booleano.
20IntSupplier
Sin parámetros, devuelve un resultado de tipo int.
21IntToDoubleFunction
Acepta una entrada de tipo int y devuelve un resultado de doble tipo.
22IntToLongFunction
Acepta una entrada de tipo int y devuelve un resultado de tipo largo.
23IntUnaryOperator
Acepta un parámetro de tipo int, y devuelve el valor tipo también int.
24LongBinaryOperator
Acepta ambos parámetros de tipo largo y valor de retorno tipo como long.
25LongConsumer
Aceptar un parámetro de entrada de tipo largo sin valor de retorno.
26Función Larga<R>
Acepta un parámetro de entrada de tipo largo y devuelve un resultado.
27Predicado largo
R acepta un parámetro de entrada largo y devuelve un resultado de tipo booleano.
28LongSupplier
Sin parámetro, devuelve un resultado de tipo largo.
29LongToDoubleFunction
Acepta una entrada de tipo largo y devuelve un resultado de tipo doble.
30LongToIntFunction
Acepta una entrada de tipo largo y devuelve un resultado de tipo int.
31LongUnaryOperator
Aceptar un parámetro del mismo tipo que largo, y devolver el valor de que el tipo también es largo.
32ObjDoubleConsumer<T>
Aceptar un tipo de objeto y un parámetro de entrada de doble tipo sin valor de retorno.
33ObjIntConsumer<T>
Acepta los parámetros de entrada de tipo objeto y tipo int sin valor de retorno.
34ObjLongConsumer<T>
Acepta parámetros de entrada de tipo objeto y tipo largo sin devolver valores.
35Predicado<T>
Acepta un parámetro de entrada y devuelve un resultado booleano.
36Proveedor<T>
Sin parámetros, devuelve un resultado.
37ToDoubleBiFunction<T,U>
Acepta dos parámetros de entrada y devuelve un resultado de doble tipo
38ToDoubleFunction<T>
Acepta un parámetro de entrada y devuelve un resultado de doble tipo
39ToIntBiFunction<T,U>
Acepta dos parámetros de entrada y devuelve un resultado de tipo int.
40ToIntFunction<T>
Aceptar un parámetro de entrada y devolver un resultado de tipo int.
41A LongBiFunction<T,U>
Aceptar dos parámetros de entrada y devolver un resultado de tipo largo.
42ToLongFunction<T>
Aceptar un parámetro de entrada y devolver un resultado de tipo largo.
43UnaryOperator<T>
Aceptar un parámetro de tipo T y devolver el valor de tipo T.


YoLa interfaz funcional en Java es el delegado en .NET/C#, pasa el método como parámetro, de la siguiente manera:

Introducción a los delegados en C# (delegar, Acción, Función, predicado)
https://www.itsvse.com/thread-4658-1-1.html

Función Métodos y Prácticas Comunes

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

Aunque la función< T, R > recibir T objetos, devolver R objetos, y solo recibir y devolver objetos, pero combinados con tuplas, se pueden lograr múltiples valores entrantes y retornados, se refieren:


Ejemplo 1: Pasa dos valores y suma

Puedes usar escritura simple y expresiones lambda, el código es el siguiente:





Ejemplo 2:

Método y entonces



Método COMBE



Código completo



Resultados de los resultados



(Fin)




Anterior:Solución de excepciones Java FeignClient Interface para múltiples nombres de servicio idénticos
Próximo:proyecto maven \target\classes\META-INF\MANIFEST. MF (sistema...
Publicado en 19/9/2021 19:34:22 |
Java también buscó, aunque no se utiliza
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com