0
我一直在閱讀如何重寫equals方法,並注意到我的書使用方法來比較字段而不是直接比較字段。在閱讀了關於getter和setter的內容之後,我仍然很難理解爲什麼在這種情況下會使用getter。這本書定義了一個類,員工,如下:重寫equals方法:爲什麼使用方法來比較字段
class Employee {
private String lastName;
private String firstName;
public Employee(String lastName, String firstName){
this.lastName = lastName;
this.firstName = firstName;
}
public String getLastName(){
return lastName;
}
public String getFirstName(){
return firstName;
}
public boolean equals(Object obj){
if(this == obj)
return true;
if(this == null)
return false;
if(this.getClass() != obj.getClass())
return false;
Employee emp = (Employee) obj;
return
this.firstName.equals(emp.getFirstName())
&& this.lastName.equals(emp.getLastName());
}
}
是否有一個原因人會使用的方法的getFirstName()與emp.firstName比較this.firstName,而不是直接對它們進行比較?
可能重複[是getter方法調用訪問變量比直接變量訪問類更好](http://stackoverflow.com/questions/23695683/is-getter-method-call-to-access-variable-比直接變量訪問更好) – YoungHobbit
也許只是一種正義的感覺:其他隱私似乎是合適的。奇怪的是,一個對象甚至可以改變另一個對象*的字段,如果它是相同的類。 –
你的意思是'if(obj == null)',而不是'if(this == null)'。 – Andreas