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

时间:2019-03-04 18:33:33

标签: java object methods parameters compare

我正在自学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 个答案:

答案 0 :(得分:2)

您在类compareSize中定义方法Animal

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

调用dog.compareSize(cat)时,是在compareSize对象上调用dog,因此在方法this中将引用dog对象。 / p>

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

Comparable界面与此无关。 通过定义compareTo方法,Comparable接口使您的类具有可比性。必须使用Collections.sort()之类的有用方法。

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

答案 1 :(得分:0)

您可以按以下方式重写方法:

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

答案 2 :(得分:0)

您的compareSize()方法可以简单地是:

public int compareSize(Animal animal){
    return Double.compare(this.size, animal.size);
}