枚举实现的单例模式

前段时间在看单例模式,里面提到了用枚举来实现单例比较好:http://blog.csdn.net/beyond0525/article/details/22794221

可是当时看不懂枚举是如何实现的。

今天又看到一个枚举的源码,也是看不懂,于是找了一些介绍枚举的文章,大概了解了:http://blog.csdn.net/veryitman/article/details/7945020,http://blog.csdn.net/lindir/article/details/8331996

枚举:

1. 一般用的枚举

enum Student {
<span style="white-space:pre">	</span>LiLei,LiLy,HanMeiMei;
}
一般理解,LiLei这些每一个都是一个整型,0,1,2,依次加1

2. 较为复杂的枚举

enum Student {
	// 枚举对象
	LiLei(11, 1), LiLy(10, 2), HanMeiMei(12, 3);
	
	// 枚举的构造函数
	Student(int age, int score) {
		this.age = age;
		this.score = score;
	}

	// 成员变量
	int age;
	int score;
}
LiLei就相当于一个Student的对象,包含两个成员变量age和score,并且在枚举Student里面已经初始化了

枚举实际是一个类:

Public abstract class Enum<E extends Enum<E>> implements Serializable,Comparable <E>    
{   
   ...  
}

理解了这个,就理解了枚举实现的单例
单例:

附上网友的一段代码:

/** 
 * @function:单例模式枚举实现 
 * @author xuzhaohu 
 *  
 */  
public enum SingletonEnum {  
    /** 
     * 1.从Java1.5开始支持; 
     * 2.无偿提供序列化机制; 
     * 3.绝对防止多次实例化,即使在面对复杂的序列化或者反射攻击的时候; 
     */  
  
    instance;  
  
    private String others;  
  
    SingletonEnum() {  
  
    }  
  
    public void method() {  
        System.out.println("SingletonEnum");  
    }  
  
    public String getOthers() {  
        return others;  
    }  
  
    public void setOthers(String others) {  
        this.others = others;  
    }  
} 

调用:

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. SingletonEnum.instance.method();  











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值