我的问题:我有 2 个对象,想要使用重载的 .equals() 来比较两个对象的名称和颜色属性,如果它们相同,则会返回 true。
我有两个对象。汽车1和汽车2
GameCar car1 = new GameCar ("MyBuddy", "Red", 19);
GameCar car2 = new GameCar();
GameCar 类有 3 个私有(private)成员变量:
private String name;
private String color;
private int position;
这是 GameCar 的两个构造函数 -
GameCar()
{
name = null;
color = null;
position = 0;
}
GameCar(String n, String c, int p)
{
name = n;
color = c;
position = p;
}
为了让 car2 获取其信息,我有以下内容:
car2.getCarInfo();
getCarInfo() 的定义 -
public void getCarInfo()
{
Scanner keyboard = new Scanner(System.in);
System.out.print("Enter the car name: ");
name = keyboard.next();
System.out.print("Enter the color: ");
color = keyboard.next();
System.out.print("Enter the starting position: ");
position = keyboard.nextInt();
}
现在这是 equals() 重载函数 -
public boolean equals(GameCar car)
{
if (name == car.name) return true;
return false;
}
这是我使用 equals() 的地方 -
System.out.println("Same cars? " + car1.equals(car2));
出于某种原因,equals() 函数即使我在进入 equals() 之前将 car2.name 和 car1.name 设置为完全相同,它仍然返回 false。
但是---如果我在重载的 equals() 中设置 name="something"和 car.name="something",那么它就会起作用。
最佳答案
将 equals() 方法更改为:
public boolean equals(GameCar car)
{
if (name.equals(car.name)) return true;
return false;
}
请查看this post
关于java - 使用 .equals() 比较两个不同初始化的对象似乎不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35328575/