java syntax int compareQuantity =((Fruit)compareFruit).getQuantity();不明白

时间:2013-12-26 17:27:22

标签: java

我可以浏览this tutorial中的以下代码,我不明白

public int compareTo(Fruit compareFruit) {
    //I don't understand this typecasting
    int compareQuantity = ((Fruit) compareFruit).getQuantity(); 
    //ascending order
    return this.quantity - compareQuantity;
    //descending order
    //return compareQuantity - this.quantity;
}
  1. 为什么我们将compareFruit类型转换为Fruit类型,当它已经是Fruit类型时?这似乎是多余的。

  2. getQuantity方法来自哪里?我在哪里可以看到这个的源代码?

  3. 我试图查看一些文档但找不到任何内容。

5 个答案:

答案 0 :(得分:1)

该演员实际上是多余的,因为mathod compareTo已经将Fruit作为参数,因此不需要它。

至于第二个问题,getQuantity方法来自Fruit类本身:

public class Fruit implements Comparable<Fruit>{

    // ...
    public int getQuantity() {
        return quantity;
    }
    // ...

}

答案 1 :(得分:1)

  

1)为什么我们将compareFruit类型与Fruit类型进行类型转换,当它开始时已经是Fruit类型?这似乎是多余的

是的,这是多余的。没有必要进行类型转换。该行可以(必须)更改为:

int compareQuantity = compareFruit.getQuantity();
  

2)getQuantity方法来自哪里?我在哪里可以看到这个的源代码?

它在上面的Fruit类中定义:

public class Fruit implements Comparable<Fruit> {
    //...
        public int getQuantity() {
        return quantity;
    }
    //...
}

答案 2 :(得分:0)

类型转换是多余的,你是对的。 getQuantity()来自Fruit类的实现。 参见:

public int getQuantity() {
    return quantity
}

答案 3 :(得分:0)

  1. 在这种情况下不需要进行铸造。语法正确bu cast是多余的。
  2. 它在Fruit类中定义了compareTo方法之上的几行。

答案 4 :(得分:0)

  1. 你是对的,这是多余的
  2. getQuantity是一种方法,可以在Fruit中声明,也可以在Fruit扩展的类中声明。它返回一个int。