Java使用一个参数比较对象
我正在自学java,不能完全理解这个问题。假设我有两个对象,想用一个方法比较它们。 在不更改方法中的参数数量的情况下,如何做到这一点 我似乎无法将另一个动物的参数引入该方法,因为它只接受参数。这与可比性有关吗Java使用一个参数比较对象,java,object,methods,parameters,compare,Java,Object,Methods,Parameters,Compare,我正在自学java,不能完全理解这个问题。假设我有两个对象,想用一个方法比较它们。 在不更改方法中的参数数量的情况下,如何做到这一点 我似乎无法将另一个动物的参数引入该方法,因为它只接受参数。这与可比性有关吗 public class Animal { private double size; private double length; public Animal(double size, double length) { this.size = size; th
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));
}
}
公共类动物{
私人双户型;
私人双倍长度;
公共动物(双倍大小,双倍长度){
这个。大小=大小;
这个长度=长度;
}
公共比较(动物){
//如果(狗的尺寸<动物的尺寸)
//返回0;
//返回1;
}
公共静态void main(字符串[]args){
动物猫=新动物(100.0,30.1);
动物狗=新动物(200.0,09.5);
System.out.println(dog.compareSize(cat));
}
}
您可以按如下方式重写该方法:
public int compareSize(Animal animal){
if (this.size < animal.size){
return -1;
}else if(this.size > animal.size){
return 1;
}
return 0;
}
虽然就编码标准而言,使用比较器会更好,但您可以在此处了解比较器的更多细节:但您必须将两个参数传递到比较器。您可以按如下方式重写该方法:
public int compareSize(Animal animal){
if (this.size < animal.size){
return -1;
}else if(this.size > animal.size){
return 1;
}
return 0;
}
虽然在编码标准方面,使用比较器会更好,但您可以在这里了解比较器的更多细节:但您必须将两个参数传递到比较器。您可以在类
动物中定义方法compareSize
在Java(以及所有其他OOP语言)中,当您对对象调用方法时,可以使用this
关键字访问该对象
当您调用dog.compareSize(cat)
时,您正在对dog
对象调用compareSize
,因此在您的方法中,此
将引用dog
对象
因此,您需要比较this.size
和animal.size
接口与此无关。
Comparable接口通过定义compareTo
方法,允许类具有可比性。需要使用有用的方法,例如
此外,您需要在compareSize
方法中定义返回类型,其签名应为:
public int compareSize(Animal-Animal)您可以在类Animal
中定义方法compareSize
在Java(以及所有其他OOP语言)中,当您对对象调用方法时,可以使用this
关键字访问该对象
当您调用dog.compareSize(cat)
时,您正在对dog
对象调用compareSize
,因此在您的方法中,此
将引用dog
对象
因此,您需要比较this.size
和animal.size
接口与此无关。
Comparable接口通过定义compareTo
方法,允许类具有可比性。需要使用有用的方法,例如
此外,您需要在compareSize
方法中定义返回类型,其签名应为:
public int compareSize(Animal-Animal)您的compareSize()
方法可以是:
public int compareSize(Animal animal){
return Double.compare(this.size, animal.size);
}
您的compareSize()
方法可以是:
public int compareSize(Animal animal){
return Double.compare(this.size, animal.size);
}
试试:this.size
。试试:this.size
。哦,我明白了。方法中缺少返回类型是一个输入错误,但是我对.this引用有一些混淆。现在我觉得我“明白了”。非常感谢,这感觉真的很重要!感谢所有其他的答案!哦,我明白了。方法中缺少返回类型是一个输入错误,但是我对.this引用有一些混淆。现在我觉得我“明白了”。非常感谢,这感觉真的很重要!感谢所有其他的答案!