我创建单例类并在不同的类中使用此类对象,此代码在eclipse中正常工作 但是当我制作可运行的jar而不是空的hashmap列表时,我不知道为什么我的代码......
我的单身课
public class PointCalculate {
public HashMap<String, Float> calPoint;
private static PointCalculate instance;
private PointCalculate(){
calPoint = new HashMap<String, Float>();
}
public static PointCalculate getInstance(){
if(instance==null){
instance = new PointCalculate();
}
return instance;
}
public void calculatePoint(String uid ,float point){
Float ps = instance.calPoint.get(uid);
if(ps==null) {
ps = point;
instance.calPoint.put(uid, ps);
}
else {
ps = point+ps.floatValue();
instance.calPoint.put(uid, ps);
}
}
}
我将从下面的这个课程传递价值......
public class Exp {
public void setpoint(){
PointCalculate obj = PointCalculate.getInstance();
obj.calculatePoint(rowkey, point);//rowkey and point come from file.....
}
}
现在我正在传递hashmap ....
public static void main(String args[]) throws Exception {
PointCalculate obj = PointCalculate.getInstance();
SqlInsertPoint.givePoint(obj.calPoint);
}
但是在SqlInsertPoint.givePoint()中,hashmap列表将为空我不知道为什么如果有任何身体知道比帮助我 提前致谢
答案 0 :(得分:0)
这段代码有什么问题?在main
中,您获得了PointCalculate的一个实例,不要将任何点放入其中,并将其传递给givePoint
方法。由于您没有填充HashMap,因此它应该为空。
另外,静态单身人士很难做到正确,一般应该避免(couple good reasons)。在您的具体情况中,不仅PointCalculate
类不是线程安全的,而且它还将calPoint
暴露给整个世界。因此,任何人都可以运行以下代码并基本上覆盖您的实例。
PointCalculate.getInstance()。calPoint = new HashMap();