¿Cómo escribir un método genérico para encontrar el elemento máximo e invocar ese método?
Mientras intentaba resolver el ejercicio.tutorial de genéricos Q&A Mis respuestas fueron ligeramente diferentes.
Mis respuestas
public static <T extends Comparable<? super T>>
T max(List<? extends T> list, int begin, int end) //Option1
public static <T extends Comparable<T>>
T max(List<? extends T> list, int begin, int end) //Option2
de la respuesta citada a continuación
Así que mi pregunta es
Opción 1: ¿Haría alguna diferencia siT extends Object & Comparable<? super T>
se sustituye porT extends Comparable<? super T>
. No esextends Object
implícito?
Opción 2: ¿Haría alguna diferencia siComparable<? super T>
se sustituye porComparable<T>
? si es así, cómo ?
La finalización del código de Eclipse crea una variable localList<? extends Comparable<? super Comparable<? super T>>> list;
en Ctrl + 1max(list, 1, 10);
que es un poco largo Cómo definir una clase (jerarquía) que se extiendeComparable<? super T>
, crear lista y agregar instancias a la lista e invocar el método de abajo? Básicamente quiero saber invocar.max()
después de agregar instancias de claseA or B
en una lista dondeclass B extends A
Escriba un método genérico para encontrar el elemento máximo en el rango [comienzo, final) de una lista.
Responder:
import java.util.*;
public final class Algorithm {
public static <T extends Object & Comparable<? super T>>
T max(List<? extends T> list, int begin, int end) {
T maxElem = list.get(begin);
for (++begin; begin < end; ++begin)
if (maxElem.compareTo(list.get(begin)) < 0)
maxElem = list.get(begin);
return maxElem;
}
}