Funzione:Java generici: funzionale simile max() astrazione
public abstract class Function<X, Y> {
abstract Y apply(X x);
}
max
metodo di implementazione
public static <V extends Comparable<V>> Function<List<V>, V> max() {
return new Function<List<V>, V>() {
@Override
public V apply(List<V> list) {
return Collections.max(list);
}
};
}
e l'uso (come dovrebbe essere simile)
Date result = max().apply(datesList);
Ma io ottenere questo errore e non capisco perché richiede Object
incompatible types; inferred type argument(s) java.lang.Object do not conform to bounds of type variable(s) V
found : <V>project.Function<java.util.List<V>,V>
required: java.lang.Object
Ho letto una grande quantità di QA simile ma non ho trovato come risolvere questo problema. Grazie.
FYI , il tuo tipo 'Function' sembra un buon posto per usare una [interfaccia] (http://docs.oracle.com/javase/tutorial/java/concepts/interface.html). – Taymon
Sono d'accordo con Taymon, vorrei creare un'interfaccia invece di una classe astratta. Nota che [Google Guava] (http://code.google.com/p/guava-libraries/) ha già un'interfaccia 'Function' che è esattamente la stessa. – Jesper
@Taymon Grazie per il suggerimento, ma in realtà ho più metodi in questa classe. Ad esempio: pubblica Funzione quindi (Funzione secondo) {...} –