gpt4 book ai didi

java - 比较对象永远不会返回 true

转载 作者:行者123 更新时间:2023-12-01 18:16:13 25 4
gpt4 key购买 nike

我试图比较两个相同类型的对象(在方法 doesHave 中),但我从未返回“true”。这是我的代码:

private ArrayList<Osoba> osoba = new ArrayList<Osoba>();    

public boolean doesHave(Osoba o) {
for (int i = 0; i < osoba.size(); i++) {
if (pobierz(i).equals(o))
return true;
}
return false;
}

public Osoba pobierz(int index) {
return osoba.get(index);
}

“Osoba”类,如下所示:

public class Osoba {
private String imie;
private String nazwisko;

public String toString() {
return imie + " " + nazwisko;
}

public Osoba(String name, String surname) {
imie = name;
nazwisko = surname;
}

public String getImie() {
return imie;
}

public String getNazwisko() {
return nazwisko;
}
}

主代码:

Osoba osoby = new Osoba(name, surname);
if (kartoteka.doesHave(osoby) == Boolean.TRUE) {
temp = odczyt.nextLine();
if (temp.equals("y"))
kartoteka.usun(osoby); //some method
else
...
}

无论我使用什么输入,这部分都不会发生。“kartoteka”是我的包,当然我已经导入了。每个类都在单独的包中,但使用它们没有问题。我已经尝试用谷歌搜索它很长一段时间了,但没有任何帮助,它看起来就像

if (kartoteka.doesHave(osoby) == Boolean.TRUE)

从来都不是真的,但我不知道为什么。没有 Boolean.TRUE 的代码也不起作用。如果我能得到一些提示,我将不胜感激。很抱歉问这样的问题,但我是 Java 新手。

最佳答案

想象一下您和您的妻子有双胞胎。

他们是“同一个人”吗?不,他们不是。我们称它们为双胞胎 A 和双胞胎 B。它们是两个不同的实例,是的,它们看起来相同,但如果您正在谈论双胞胎 A,那么您就不是在谈论双胞胎 B,反之亦然。重点是,它们不相等:),在 Java 中是相同的。孪生 A 只等于它自己,没有其他。

您必须创建自己的方法,该方法比较两个 Osoba 实例的所有属性。

另一个选择是重写 equals 和 hashCode 方法,但这对于您的情况来说不是一个好方法。

关于java - 比较对象永远不会返回 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29350328/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com