public class Contact
{
int i;
String name;
public Contact(int iVal, String nameVal)
{
i = iVal;
name = nameVal;
}
}
public class MultiMap
{
public static void main (String args[])
{
java.util.HashMap m = new java.util.HashMap();
Contact m1 = new Contact(1, "name");
Contact m2 = new Contact(1, "name");
m.put(m1, "first");
m.put(m2, "second");
System.out.println(m.get(m1));
System.out.println(m.get(m2));
}
}
first
second
請問這個 「get」 方法的行爲?由於m1和M2具有相同的值,我沒有重寫hashcode(),Object類的equals()方法會被調用嗎?
這是正確的嗎?
- 沒有hashCode方法,所以沒有辦法讓JVM,看看對象M1和M2包含不同的值
- 沒有equals方法重寫所以Object類的equals()被調用,併爲這兩個對象是不同的代碼上面的工作正常沒有M2取代M1的價值。