好的,基本上我在这里有通用类型T,它实现了Comparable接口。现在说你要迭代一个T对象数组。我已经看到了在迭代时使用T引用的示例以及其他具有Comparable引用的示例,这可能是因为T实现了Comparable。
我的问题是,为什么你会选择另一个;是否有任何真正的实际原因选择可比较的参考而不是T?
该示例显示了对数组的迭代,一个使用Comparable引用,另一个使用T引用。
public static <T extends Comparable<T>>
void baz(T[] biz)
{
for (Comparable d: biz)
{
System.out.println(d); //Comparable reference
}
for (T foo: biz)
{
System.out.println(foo); //T reference
}
}
答案 0 :(得分:1)
在System.out.println
的情况下,Object
和Comparable<T>
都需要T
(因为所有对象都是Object
的实例),所以你可以写for (Object foo : biz)
并且它已经在这种情况下工作了。
在一般情况下,选择适用于您需要调用的操作的最常规类型。
答案 1 :(得分:0)
仅在您要比较对象时使用Comparable
引用。否则使用T
引用,因为您可能希望将对象传递给采用T
对象的其他方法。
请记住,标准继承规则适用于此处 - 您可以对T
投射Comparable
引用(因为您指定T
必须扩展Comparable
),但您可以&# 39; t将每个Comparable
引用转换为T
。