ho bisogno di un'interfaccia simile:Java: funzione generale X-> Y interfaccia
interface Function<X,Y> {
Y eval(X obj);
}
C'è qualcosa di simile in Java già o ho bisogno di definire la mia?
ho bisogno di un'interfaccia simile:Java: funzione generale X-> Y interfaccia
interface Function<X,Y> {
Y eval(X obj);
}
C'è qualcosa di simile in Java già o ho bisogno di definire la mia?
v'è un built-in di interfaccia in questo modo, sebbene sia compatibile solo con Java 8 onw ARDS. Lo puoi trovare here.
Dalle Javadocs:
public interface Function<T,R>
rappresenta una funzione che accetta un argomento e produce un risultato.
Questa è un'interfaccia funzionale il cui metodo funzionale è
apply(Object)
.Tipo Parametri:
T
- il tipo di input per la funzione
R
- il tipo del risultato della funzione
Partenza Guava, ha una Function interface:
public interface Function<F, T> {
/**
* Applies the function to an object of type {@code F}, resulting in an object of type {@code T}.
* Note that types {@code F} and {@code T} may or may not be the same.
*
* @param from the source object
* @return the resulting object
*/
T apply(@Nullable F from);
/**
* Indicates whether some other object is equal to this {@code Function}. This method can return
* {@code true} <i>only</i> if the specified object is also a {@code Function} and, for every
* input object {@code o}, it returns exactly the same value. Thus, {@code
* function1.equals(function2)} implies that either {@code function1.apply(o)} and {@code
* function2.apply(o)} are both null, or {@code function1.apply(o).equals(function2.apply(o))}.
*
* <p>Note that it is always safe <i>not</i> to override {@link Object#equals}.
*/
boolean equals(@Nullable Object obj);
}
Infatti, considerando il vostro scopo è tuo, e non Sun/Oracle uno, si dovrebbe definire la propria interfaccia (come si definisce il contratto vuoi implementors della tua interfaccia per fullfil).
Tuttavia, se esiste già un framework con tale interfaccia e il suo scopo è uguale al tuo, è possibile utilizzare la sua definizione, ma con la massima cautela.
Sfortunatamente, non c'è nulla di simile nelle librerie Java principali. Di conseguenza, molte librerie definiscono la propria interfaccia simile a una funzione. Se si utilizza già tale libreria, è possibile riutilizzare la funzione che utilizza.
So che la risposta è vecchia. Ma a partire da Java 8+, questo è possibile. https://www.leveluplunch.com/java/examples/java-util-function-function-example/ – Eternalcode
È possibile utilizzare una libreria come Apache Commons Functor che ha funzioni utili come:
UnaryFunction
T evaluate(A obj);
BinaryFunction
T evaluate(L left, R right);
possibile duplicato di [Java: c'è una funzione di mappa? ] (http://stackoverflow.com/questions/3907394/java-is-there-a-map-function) – Riduidel
@Riduidel: Com'è la stessa domanda? È una domanda completamente diversa. – Albert
Questa è forse la più evidente svista quando Java è stato generato. –