3 回答
TA贡献1821条经验 获得超4个赞
compareSize
您在类中定义方法Animal
。
在 Java(以及所有其他 OOP 语言)中,当您调用对象的方法时,可以使用this
关键字访问该对象。
当您调用时dog.compareSize(cat)
,您正在调用 compareSize
您的dog
对象,因此在您的方法this
中将引用该dog
对象。
因此,您需要比较this.size
和animal.size
。
Comparable接口与此无关。compareTo
Comparable 接口通过定义方法允许您的类具有可比性。需要使用有用的方法,如Collections.sort()。
此外,您需要在compareSize
方法中定义返回类型,其签名应为:public int compareSize(Animal animal)
TA贡献1785条经验 获得超8个赞
您的compareSize()方法可能只是:
public int compareSize(Animal animal){
return Double.compare(this.size, animal.size);
}
TA贡献1868条经验 获得超4个赞
你可以重写方法如下:
public int compareSize(Animal animal){
if (this.size < animal.size){
return -1;
}else if(this.size > animal.size){
return 1;
}
return 0;
}
这里发生的是,当您使用“this”时,它引用了正在调用该方法的对象中的大小。即,如果您正在执行 dog.compareSize(cat),则您正在调用 dog 对象中的 compareSize。因此,狗对象内的 this.size 将返回 200.0
如果你做了 cat.compareSize(dog),this.size 将返回 100.0
你将如何使用它是
public static void main(String[] args){
Animal cat = new Animal(100.0,30.1);
Animal dog = new Animal(200.0, 09.5);
System.out.println(dog.compareSize(cat));
}
虽然在编码标准方面使用比较器会更好,但您可以在此处了解有关比较器的更多详细信息:https ://www.baeldung.com/java-comparator-comparable但您必须将两个参数传递给比较器。
添加回答
举报