Java泛型:类型由未实现的接口绑定
我正在阅读关于泛型的java文档。在该页上,代码错误:Java泛型:类型由未实现的接口绑定,java,generics,Java,Generics,我正在阅读关于泛型的java文档。在该页上,代码错误: public static <T> int countGreaterThan(T[] anArray, T elem) { int count = 0; for (T e : anArray) if (e > elem) // compiler error ++count; return count; } public static int countgr
public static <T> int countGreaterThan(T[] anArray, T elem) {
int count = 0;
for (T e : anArray)
if (e > elem) // compiler error
++count;
return count;
}
public static int countgreater大于(T[]数组,T元素){
整数计数=0;
对于(T e:anArray)
if(e>elem)//编译器错误
++计数;
返回计数;
}
更正为:
public interface Comparable<T> {
public int compareTo(T o);
}
public static <T extends Comparable<T>> int countGreaterThan(T[] anArray, T elem) {
int count = 0;
for (T e : anArray)
if (e.compareTo(elem) > 0)
++count;
return count;
}
公共接口{
公共国际比较(TO);
}
公共静态整数大于(T[]数组,T元素){
整数计数=0;
对于(T e:anArray)
如果(例如,与(元素)>0相比)
++计数;
返回计数;
}
我在页面上没有看到
Compariable
接口的实现。我想它应该被实现,只是它被忽略了。我的猜测正确吗?Comparable
接口应该由类T
实现,该类将使用countgreether
方法。因为Comparable
是内置的,是Java运行时库的一部分。请参阅javadoc,或者可能我误解了您的问题,因此:“可比较接口的实现”您无法看到实现,因为实现将是t
表示的类的一部分,不管它是什么。如果您想查看一个示例,只需找到实现Comparable
的任何类,例如String
,Integer
,LocalDateTime
。。。如果您查看任何此类的源代码,您将看到compareTo
方法的实现。实现<代码>可比<代码>的每个类可能都有自己的单独实现。没有单一的实现可供查看at@Andreas非常感谢。我的问题是文档页面上的代码是否完全正常工作。如果Comparable是内置的,那么为什么他们在那里编写它的定义,而不是发布到实际接口的链接呢?很可能是为了方便您,所以您不必去其他地方查找。任何声明实现接口的类都必须实现接口的方法,无论接口是内置的还是自定义的。内置接口没有什么特别之处。