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

Пока я пытался решить упражнениеиз учебника дженериков Q & A Мои ответы немного отличались

Мои ответы

public static 
    T max(List list, int begin, int end) //Option1

public static 
    T max(List list, int begin, int end) //Option2

из цитируемого ответа ниже

Итак, мой вопрос

Вариант 1: Будет ли это иметь значение, еслиT extends Object & Comparable заменяется наT extends Comparable, неextends Object неявный?

Вариант 2: Будет ли это иметь значение, еслиComparable заменяется наComparable ? если так как?

Завершение кода Eclipse создает локальную переменнуюList list; по Ctrl + 1max(list, 1, 10); который немного длинен. Как определить классы (иерархию), которые расширяютсяComparable создать список и добавить экземпляры в список и вызвать метод ниже? В основном я хочу знать, как вызватьmax() после добавления экземпляров классовA or B в список, гдеclass B extends A

Напишите универсальный метод, чтобы найти максимальный элемент в диапазоне [начало, конец) списка.

Ответ:

import java.util.*;

public final class Algorithm {
    public static 
        T max(List 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)

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