CodeA:public class MyManager{ private static class MyManagerContainer{
private static MyManager instance = new MyManager();
} public static MyManager getInstance(){
return MyManagerContainer.instance;
} private MyManager(){ }}
CodeB:public class MyManager{
private static MyManager instance; public static getInstance(){
return instance;
} public MyManager(){
if(instanct!=null){
throw new IllegalStateException("Already exist");
}
instance = this;
}
}
同样是单例,有啥区别,各有啥好处?
private static MyManager instance = new MyManager();
} public static MyManager getInstance(){
return MyManagerContainer.instance;
} private MyManager(){ }}
CodeB:public class MyManager{
private static MyManager instance; public static getInstance(){
return instance;
} public MyManager(){
if(instanct!=null){
throw new IllegalStateException("Already exist");
}
instance = this;
}
}
同样是单例,有啥区别,各有啥好处?
第二个是这个类只能产生一个对象吧.再有就会直接抛出错误。
弱弱的问一下 A的那个内部类为什么要用static修饰啊?
CodeB不是线程安全的,在多线程可能会产生多个实例
唯一不同是CodeB可以自己手动初始化
CodeA是JVM直接帮你实例化