当我试图从泛型教程问答中解决练习时,我的答案略有不同
我的答案
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>
吗?如果是这样怎么办?List<? extends Comparable<? super Comparable<? super T>>> list;
Eclipse 代码完成在 Ctrl+1 上创建局部变量,max(list, 1, 10);
这有点冗长。如何定义扩展Comparable<? super T>
、创建列表并将实例添加到列表并调用以下方法的类(层次结构)?基本上我想知道max()
在将类实例添加A or B
到列表后如何调用class B extends A
编写一个通用方法来查找列表的 [begin, end) 范围内的最大元素。
回答:
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;
}
}