我可以浏览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;
}
为什么我们将compareFruit
类型转换为Fruit
类型,当它已经是Fruit
类型时?这似乎是多余的。
getQuantity
方法来自哪里?我在哪里可以看到这个的源代码?
我试图查看一些文档但找不到任何内容。
答案 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)
答案 4 :(得分:0)
getQuantity
是一种方法,可以在Fruit
中声明,也可以在Fruit
扩展的类中声明。它返回一个int。