这两者之间有何区别:
public <E>int compareTo(E e) // first line (compilation error)
并且
public int compareTo(E e) // second line (OK)
只有在第二行中,我才通过了编译器。这是否意味着需要确保该特定元素在类中被普遍声明? 否则,您可以放入任何元素,但不会有太多意义。我理解得对吗?谢谢。
compareTo()
方法仍然必须与接口声明兼容。 - millimooseComparable
,那么你不需要使方法泛型化。为什么要在compareTo()
上使用类型参数呢? - zagyipublic <E extends String> int compareTo(E o) { //1
}
根据您的编程需要,您可以考虑任何类,而不是使用String
。
上述情况是针对实现Comparable
接口的类考虑的。
class SimpleClass<E> { // 2
E var;
public <E> int compareTo(E o) {
return 0;
}
}
如果我们不实现Comparable
接口,那么在//2处的上面的类将起作用。 E不需要扩展String(任何其他类)。
public <E> int compareTo(E o) {}
抛出编译时错误呢?用户对在返回类型附近编写 <E>
表示好奇,那么我的回答是: - AmitGComparable<String>
。 - millimoosepublic <E> int compareTo(E o) {}
仍会抛出异常。 - AmitGcompareTo
方法,上述情况适用于Comparable接口实现。 - AmitG
E
是什么?)。 - NPE