Función:Java genéricos: Funcional-como max() abstracción
public abstract class Function<X, Y> {
abstract Y apply(X x);
}
max
implementación del método
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);
}
};
}
y el uso (la forma en que debe ser similar)
Date result = max().apply(datesList);
Pero Obtenga este error y no entiendo por qué se requiere 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
He leído una gran cantidad de control de calidad similar pero no he encontrado cómo solucionarlo. Gracias.
FYI , su tipo de 'Función' parece un buen lugar para usar una [interfaz] (http://docs.oracle.com/javase/tutorial/java/concepts/interface.html). – Taymon
Estoy de acuerdo con Taymon, haría una interfaz en lugar de una clase abstracta. Tenga en cuenta que [Google Guava] (http://code.google.com/p/guava-libraries/) ya tiene una interfaz 'Function' que es exactamente la misma. – Jesper
@Taymon Gracias por su sugerencia, pero en realidad tengo más métodos en esta clase. Por ejemplo: public Función then (Función second) {...} –