当前位置: 代码迷 >> J2SE >> java中的单例模式可以这样写吗?该怎么解决
  详细解决方案

java中的单例模式可以这样写吗?该怎么解决

热度:130   发布时间:2016-04-24 01:55:08.0
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;而提供一个静态方法返回则实例不会出现这个问题
  相关解决方案