0
假設我們有一個具有以下數據字段和函數的Employee類。該程序試圖看看2 Employees
是通過比較其name
和address
Java類多態性
public class Employee{
private String name;
private double hours;
private double rate;
private Address address;
@Override
public boolean equals(Object obj){
if(obj == this) return true;
if(obj == null) return false;
if(this.getClass() == obj.getClass()){
Employee other = (Employee) obj;
return name.equals(other.name) && address.equals(other.address);
}else{
return false;
}
}
爲什麼我們沒有做到這一點,而不是public boolean equals(Employee obj)
(不同參數)一樣的嗎?
爲什麼我會故意將null傳遞給'new Empolyee()。equals(null)'。是'if(obj == null)return false;'寫入所有可能性? – user133466
@ user133:與「故意」無關。由於它是公開的,因此無法控制該方法的使用方式。 –
@ user133466:1st,HoverfraftFullOfEels是正確的。第二 - 這種情況是非常有可能的。想象一下你有一個Map'。現在你做'myEmployee.equals(myMap.get(5));'。如果'myMap'不包含5作爲鍵,它將返回'null'。 –
amit