A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ccyznhy 中级黑马   /  2013-8-22 22:50  /  1025 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

求各路大虾指点?

6 个回复

倒序浏览
问题最好具体一点,不要提这样抽象的问题,这样是没有分加的
回复 使用道具 举报
public class Singleton {  
    private Singleton() {}  
  
    private static final class  Holder {  
        static final Singleton instance = new Singleton();  
    }  
  
    public static Singleton getInstance() {  
        return Holder.instance;  
    }  
}  


这样写不仅达到了单例的效果,而且还是延迟加载
回复 使用道具 举报
单例的三要素:
1.将构造函数私有化。
2.在类中创建一个本类对象,并私有化。
3.向外提供一个公有方法来获取该对象。

Java枚举类是从Java5开始支持的。

枚举类的构造方法是用private修饰的。
枚举类的所有实例写在类的第一行,这时枚举类就会自动产生实例的对象。
这些实例都是public static void,可以被外界类名.对象直接调用。

因此
当枚举只有一个成员的时候,就可以作为一种单例的实现方式。
另外网上看到有人说enum获得的单例是最安全的,懒汉式和饿汉式的单例都可以用反射得到。
实现代码:
  1. public enum Singleton {   
  2.       INSTANCE {   
  3.             public void someMethod() {   
  4.             // . . .   
  5.        }   
  6.     };   

  7.     protected abstract void someMethod();   
  8. }  
复制代码

点评

回复很给力!刚学到枚举飘过~  发表于 2014-9-3 21:16

评分

参与人数 1技术分 +1 收起 理由
薛鹏鹏 + 1

查看全部评分

回复 使用道具 举报
。。。还是没有技术分,多谢指点!其实这道题我也会。。。
回复 使用道具 举报
亲  如果问题已解决请把类别改为已解决,谢谢。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马