Как написать универсальный метод, чтобы найти максимальный элемент и вызвать этот метод?

Пока я пытался решить упражнениеиз учебника дженериков 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;
    }
}

Ответы на вопрос(2)

Ваш ответ на вопрос