Javaでは(?)オブジェクト同士の比較って下記だけじゃできないんですね。。
class Test { String name; Test(String n) { name = n; } } class equal1 { public static void main(String[ ] args) { Test a1 = new Test("a"); Test a2 = new Test("a"); System.out.println(a1 == a2); //false } }
下記のようにしないとTrueにならない。
class Test { String name; Test(String n) { name = n; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((name == null) ? 0 : name.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Test other = (Test) obj; if (name == null) { if (other.name != null) return false; } else if (!name.equals(other.name)) return false; return true; } } class equal1 { public static void main(String[] args) { Test a1 = new Test("a"); Test a2 = new Test("a"); System.out.println(a1.equals(a2)); } }