雖然你可以有setter和List
類型的getter,你應該仔細考慮它們的實現,因爲大多數列表是可變的。例如,假設您想驗證jobs
列表不是空的。
public void setJob(List<Employee> jobs) {
if (jobs.isEmpty()) throw new RuntimeException();
this.job = jobs;
}
現在下面的代碼生成一個員工沒有工作:
Employee e = ...;
e.setJobs(jobs);
jobs.clear();
//the employee now has no jobs :-(
您可以通過一個defensive copy
public void setJob(List<Employee> j) {
this.job = new ArrayList<>(j);
}
這同樣適用於吸氣避免此問題。如果要實現它:
public List<Employee> getJobs() {
return this.jobs;
}
您允許呼叫者修改私有作業列表而不調用相應的setter:myEmployee.getJobs().clear()
。
在這種情況下,您可能會返回一個不可修改的列表,而不是返回內部對象。
public List<Employee> getJobs() {
return java.util.Collections.unmodifiableList(this.jobs);
}
那麼你的問題是什麼? – childofsoong 2015-03-02 23:10:40
只想知道如何在我的課堂中設置setter和getter,謝謝 – 2015-03-02 23:11:32
您可以通過簡單地調用您的'setJob'方法來添加儘可能多的,但是getter應該返回什麼?第一個員工?最後一名員工?員工的「可迭代」? – 2015-03-02 23:24:45