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);//这是我的setter
我希望以后能够通过扩展arraylist来添加我想要的任意多个'job‘
发布于 2015-03-03 07:28:32
虽然您可以使用List类型的getter和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);
}这同样适用于getter。如果您将其实现为:
public List<Employee> getJobs() {
return this.jobs;
}您允许调用者修改私有作业列表,而不调用相应的设置器:myEmployee.getJobs().clear()。
在这种情况下,您可以返回一个不可修改的列表,而不是返回内部对象。
public List<Employee> getJobs() {
return java.util.Collections.unmodifiableList(this.jobs);
} 发布于 2015-03-03 07:13:17
通常,对于集合或数组,您将使用addJob、removeJob和getJobs,而不是get/set对。
https://stackoverflow.com/questions/28821142
复制相似问题