如何理解新的可比较的arrray?

时间:2016-08-28 10:28:56

标签: java

可比较是一个界面,我们可以吗?为什么?我是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。谢谢。

2 个答案:

答案 0 :(得分:1)

正如@Oliver Charlesworth所说,你创建的是一个本身不是接口的数组。问题是你现在可以创建Comparable的实例并将它们存储在数组中。为此,您可以:

  1. 实现Comparable并在数组中创建实现的实例,或
  2. 通过利用Anonymous classes
  3. 的概念创建Comparable的实例

    后者看起来像:

    aux[0]= new Comparable(){
        public int compareTo(Object o){
            //code that compares this with the Object o
        }
    };
    

答案 1 :(得分:1)

要理解的重要事项是:使用创建对象(也称为引用类型)。而且对象总是只有一个那个"支持"他们的身份。

但是你可能知道,一个类可以实现各种接口。因此,创建一个数组来承载实现某个接口的类的对象是完全没有问题的。你看,在这个意义上,界面是一个"视图"这使您可以处理某些对象,只查看它们提供的功能的部分

换句话说:不,你不能创造"对象"来自界面。所以,你在你的例子中放在那个数组中的东西,最终是"某些类的实例",而不是"接口的纯实例" - 因为后者根本不存在于Java语言中。但是你可以做的是创建一个包含所有符合" Comparable"的对象的数组。图。