为了账号安全,请及时绑定邮箱和手机立即绑定

Java 将对象与一个参数进行比较

Java 将对象与一个参数进行比较

慕侠2389804 2022-07-20 16:20:34
我正在自学java,不太明白这个问题。假设我有两个对象,并且想在一个方法中比较它们。如何在不更改方法中参数数量的情况下做到这一点?我似乎无法将其他动物的参数放入方法中,因为它只接受参数。它与可比性有关吗?public class Animal {  private double size;  private double length;  public Animal(double size, double length) {    this.size = size;    this.length = length;  }  public compareSize(Animal animal) {    //if (dog.size <  animal.size)      //return 0;    //return 1;  }  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));  }}
查看完整描述

3 回答

?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

compareSize您在类中定义方法Animal

在 Java(以及所有其他 OOP 语言)中,当您调用对象的方法时,可以使用this关键字访问该对象。

当您调用时dog.compareSize(cat),您正在调用 compareSize您的dog对象,因此在您的方法this中将引用该dog对象。

因此,您需要比较this.sizeanimal.size

Comparable接口与此无关。compareToComparable 接口通过定义方法允许您的类具有可比性。需要使用有用的方法,如Collections.sort()

此外,您需要在compareSize方法中定义返回类型,其签名应为:public int compareSize(Animal animal)


查看完整回答
反对 回复 2022-07-20
?
慕的地10843

TA贡献1785条经验 获得超8个赞

您的compareSize()方法可能只是:


public int compareSize(Animal animal){

    return Double.compare(this.size, animal.size);

}


查看完整回答
反对 回复 2022-07-20
?
MYYA

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但您必须将两个参数传递给比较器。


查看完整回答
反对 回复 2022-07-20
  • 3 回答
  • 0 关注
  • 100 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信