当我尝试解决泛型教程问答中的练习时,我的答案略有不同。
我的答案
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代码完成在Ctrl+1上创建本地变量
List<? extends Comparable<? super Comparable<? super T>>> list;
,这有点冗长。如何定义继承Comparable<? super T>
的类(层次结构),创建列表并将实例添加到列表中,并调用下面的方法?基本上,我想知道如何在将A或B
类实例添加到列表后调用max()
方法,其中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;
}
}
Parent
和Child
的代码。我猜那就是你想要的。 - Rohit Jainmax(list, 1, 10);
并按下Ctrl+1并选择“创建本地变量列表”时,它会被插入。是的,你已经回答了第三个问题,谢谢:)。当Eclipse创建那个冗长的声明时,我有点困惑。 - Prashant Bhate