Как написать универсальный метод, чтобы найти максимальный элемент и вызвать этот метод?
Пока я пытался решить упражнениеиз учебника дженериков Q & A М, у ответы были немного разные
Мои ответы
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
из цитируемого ответа ниже
Итак, мой вопрос
Вариант 1: Будет ли это иметь значение, еслиT extends Object & Comparable<? super T>
заменяется наT extends Comparable<? super T>
, неextends Object
неявный?
Вариант 2: Будет ли это иметь значение, еслиComparable<? super T>
заменяется наComparable<T>
? если так как?
Завершение кода Eclipse создает локальную переменнуюList<? extends Comparable<? super Comparable<? super T>>> list;
по Ctrl + 1max(list, 1, 10);
который немного длинен. Как определить классы (иерархию), которые расширяютсяComparable<? super T>
создать список и добавить экземпляры в список и вызвать метод ниже? В основном я хочу знать, как вызватьmax()
после добавления экземпляров классовA or B
в список, гдеclass B extends A
Напишите универсальный метод, чтобы найти максимальный элемент в диапазоне [начало, конец) списка.
Ответ:
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;
}
}