簡體   English   中英

類java中的ArrayList獲取器和設置器

[英]ArrayList getter and setter in a class java

public class Employee                                               
{
private String name;
private String department;


private ArrayList<Employee>job= new ArrayList();

//只想為此ArrayList添加getter和setter

public void setJob(Employee j)
{
job.add(j);

//這是我的二傳手

我希望以后可以通過擴展arraylist盡可能多地添加“作業”

盡管可以使用List類型的setter和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 :-(

您可以通過制作防御性副本來避免此問題

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);
}    

通常對於集合或數組,您將使用addJob,removeJob和getJobs而不是獲取/設置對。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM