可比较是一个界面,我们可以新吗?为什么?我是Java的新手。部分代码如下:
/**
* Rearranges the array in ascending order, using the natural order.
* @param a the array to be sorted
*/
public static void sort(Comparable[] a) {
Comparable[] aux = new Comparable[a.length];
sort(a, aux, 0, a.length-1);
assert isSorted(a);
}
类文件为here。谢谢。
答案 0 :(得分:1)
正如@Oliver Charlesworth所说,你创建的是一个本身不是接口的数组。问题是你现在可以创建Comparable
的实例并将它们存储在数组中。为此,您可以:
Comparable
并在数组中创建实现的实例,或Comparable
的实例
醇>
后者看起来像:
aux[0]= new Comparable(){
public int compareTo(Object o){
//code that compares this with the Object o
}
};
答案 1 :(得分:1)
要理解的重要事项是:使用新创建对象(也称为引用类型)。而且对象总是只有一个类那个"支持"他们的身份。
但是你可能知道,一个类可以实现各种接口。因此,创建一个数组来承载实现某个接口的类的对象是完全没有问题的。你看,在这个意义上,界面是一个"视图"这使您可以处理某些对象,只查看它们提供的功能的部分。
换句话说:不,你不能创造"对象"来自界面。所以,你在你的例子中放在那个数组中的东西,最终是"某些类的实例",而不是"接口的纯实例" - 因为后者根本不存在于Java语言中。但是你可以做的是创建一个包含所有符合" Comparable"的对象的数组。图。