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

我正在自学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));

  }

}


慕侠2389804
浏览 101回答 3
3回答

收到一只叮咚

compareSize您在类中定义方法Animal。在 Java(以及所有其他 OOP 语言)中,当您调用对象的方法时,可以使用this关键字访问该对象。当您调用时dog.compareSize(cat),您正在调用&nbsp;compareSize您的dog对象,因此在您的方法this中将引用该dog对象。因此,您需要比较this.size和animal.size。Comparable接口与此无关。compareToComparable 接口通过定义方法允许您的类具有可比性。需要使用有用的方法,如Collections.sort()。此外,您需要在compareSize方法中定义返回类型,其签名应为:public int compareSize(Animal animal)

慕的地10843

您的compareSize()方法可能只是:public int compareSize(Animal animal){&nbsp; &nbsp; return Double.compare(this.size, animal.size);}

MYYA

你可以重写方法如下:public int compareSize(Animal animal){if (this.size < animal.size){&nbsp; &nbsp; return -1;}else if(this.size > animal.size){&nbsp; &nbsp; 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){&nbsp; &nbsp; Animal cat = new Animal(100.0,30.1);&nbsp; &nbsp; Animal dog = new Animal(200.0, 09.5);&nbsp; &nbsp; System.out.println(dog.compareSize(cat));&nbsp;}虽然在编码标准方面使用比较器会更好,但您可以在此处了解有关比较器的更多详细信息:https ://www.baeldung.com/java-comparator-comparable但您必须将两个参数传递给比较器。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java