请看如下代码,对类中的变量尽量封装起来,设置为私有变量,并提供其getter/setter访问器,是JAVA中的一条比较重要的规范。对于基本数据类型的get方法直接返回该变量即可。而引用类型则最好在get方法中返回该对象的clone对象。为的是防止外部对象获得该对象的引用,从而破坏封装性。这一点很好,但是在看一些代码中发现,很多引用类型变量的get方法添加了synchronized关键字,其作用在哪里,在这里有必要实现同步功能吗?
public class Department {
private int id = null;
private String deptname = null;
private String[] emp = new String[]{};
public String getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getDeptname() {
return deptname;
}
public void setDeptname(String deptname) {
this.deptname = deptname;
}
public synchronized String[] getEmp() {
return emp.clone();
}
public void setEmp(String[] emp) {
this.emp = emp;
}
}
public class Department {
private int id = null;
private String deptname = null;
private String[] emp = new String[]{};
public String getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getDeptname() {
return deptname;
}
public void setDeptname(String deptname) {
this.deptname = deptname;
}
public synchronized String[] getEmp() {
return emp.clone();
}
public void setEmp(String[] emp) {
this.emp = emp;
}
}
反了。
lz看看clone做什么的,怎么实现的就知道为什么要加synchronized了。