public class Cluster {
private static String id;
}
与
public class Cluster {
private String id;
}
的不同:
前者中定义的是静态变量id,这个变量在类加载(不是new)的时候就创建了这个id,以后对这个id所有的操作,不管你new不new都都会改变这个值,而后者只在new的本次操作有效,测试代码如下:
ConcurrentHashMap<String, Cluster> writableCluster=new ConcurrentHashMap<String,Cluster>();
for(int i=1;i<5;i++){
Cluster myCluster= new Cluster();
myCluster.setId(String.valueOf(i));
System.out.println("myCluster.getId():"+myCluster.getId());
writableCluster.put(String.valueOf(i),myCluster);
}
for(Map.Entry<String, Cluster> entry : writableCluster.entrySet()){
String mapKey = entry.getKey();
Cluster cluster = entry.getValue();
System.out.println("mapKey:"+mapKey);
System.out.println("cluster.getId():"+cluster.getId());
}
你可以试试以上两者的变化。