日期:2014-05-20  浏览次数:20688 次

java中的单例模式可以这样写吗?
Java code

public class Test1
{
    public static void main(String[] args)
    {
        Aaa a=Aaa.xxx;
        Aaa b=Aaa.xxx;
        System.out.println(a.toString());
        System.out.println(b.toString());
    }
}
class Aaa
{
    private Aaa()
    {
        
    }
    public static Aaa xxx=new Aaa();
}



------解决方案--------------------
class Aaa
{
private Aaa()
{

}
public static Aaa xxx=new Aaa();
}

建议将成员字段变为 private,改用 getInstance() 方法获取

class Aaa
{
private Aaa()
{

}
private final static Aaa xxx=new Aaa();

public static Aaa getInstance() {
return xxx;
}
}
------解决方案--------------------
就是说你的钱都暴露在外面了,我们可以直接拿
------解决方案--------------------
你的静态成员xxx是public,外部可以直接访问的,Aaa.xxx=null;而提供一个静态方法返回则实例不会出现这个问题