Enum使用
http://www.java-cn.com/club/html/40/n-640.html 1、????目的
簡(jiǎn)單認(rèn)為:滿足一些需求
2、????定義、使用
public?enum?SexEnum?{
????male(1),female(0);?? ?
????private?final?int?value;?? ?
????private?SexEnum(int?value){
????????this.value?=?value;
????}
????public?int?getValue(){
????????return?this.value;
????}
}
public?class?TestSexEnum?{
????/*
?????*?@param?args
?????*/
????public?static?void?main(String[]?args)?{
????????System.out.println(SexEnum.male.getValue());
????????for?(SexEnum?item:SexEnum.values()){
????????????System.out.println(item.toString()+item.getValue());
????????}
????}
}
3、與類/接口相比
=與類相同,不同的地方就是寫法不一樣(enum比較簡(jiǎn)單,但是寫法比較陌生)
=同樣可以添加方法,屬性
=enum不能繼承類(包括繼承enum),只能實(shí)現(xiàn)接口,類無(wú)此限制(除非用final來(lái)限制)。在這個(gè)方面,enum更像interface
=enum只支持public和[default]?訪問(wèn)修飾,class支持比較豐富
=可以與下面的類比較一下,定義比較相似
Public?class?Sex{
????Public?static?final?Sex?male?=?new?Sex(1);
????Public?static?final?Sex?female?=?new?Sex(0);
?? ?Private?Sex(int?value){
????????This.value?=?value;
}
Public?int?getValue(){
????Return?this.value;
}
}
=調(diào)用比較相似
SexEnum.male.getValue()
Sex.male.getValue()
總結(jié):其實(shí)完全能夠用class替代enum,個(gè)人認(rèn)為enum是早期面向過(guò)程中,簡(jiǎn)單數(shù)值枚舉集合的一種表示,在java中對(duì)enum進(jìn)行了擴(kuò)展,讓它只具有類的部分能力,導(dǎo)致結(jié)構(gòu)不清晰,在java中進(jìn)入enum有畫蛇添足的感覺(jué).
?? ? ? 更為重要的是,我們?cè)谶M(jìn)行設(shè)計(jì)的時(shí)候引入enum非常容易偏離OO思想,進(jìn)入以數(shù)據(jù)或者過(guò)程為中心的路子 -------------------------------------------------------------------------------------------- MyDemo:
public enum TrustPassMember {
??ETTrustPass(128479), // 128479
??PersonTrustPass(228479), // 228479
??MarketTrustPass(328479);// 328479
??private final int value;
??private TrustPassMember(int value) { //定義無(wú)參的構(gòu)造函數(shù)
????this.value = value;
??}
??public int getValue() {
????return this.value;
??}
} 獲取enum中對(duì)應(yīng)類型的值: TrustPassMember.?ETTrustPass.getValue()
----------------------------------------------------------------------------------------- 剛在導(dǎo)入一個(gè)maven的工程時(shí),出現(xiàn)了編譯不兼容的情況,出現(xiàn)了enum之類的都不可以用,這主要是使用了jdk5.0之前的編譯環(huán)境,而jdk1.5之前的版本的編譯環(huán)境對(duì)jdk1.5之后的是編譯不通過(guò)的。 project工程名->Properties->Java Compiler->Compiler compilance level使用1.5以上的
且勾上‘use default compliance settings’
轉(zhuǎn)載于:https://blog.51cto.com/tianya23/278520
總結(jié)
- 上一篇: 爱情三十一课,先信自己
- 下一篇: 金山安全实验室公布中国互联网六大类钓鱼网