JAVA 枚举类的初步理解
生活随笔
收集整理的這篇文章主要介紹了
JAVA 枚举类的初步理解
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
JAVA 枚舉類的初步理解
現(xiàn)在Java的枚舉類在真實項目中已經(jīng)用的比較頻繁,比靜態(tài)常量更好用,也更有限定性,enum類可以用來表示有限的類對象,比如星期、月份、性別或者項目中的產(chǎn)品類型 像諸如此類的數(shù)量比較少可數(shù)的時候可以用枚舉類型,下面我們就來看個來初步理解Java的枚舉類。
package com.lcx.enum_test;
/*** * 性別枚舉類* @author qq1013985957* */
public enum Gender {/*** 枚舉類其實和普通類很相似,只不過枚舉類只能定義可數(shù)的枚舉對象,多次調(diào)用Gender.MAN返回的是同一個對象。* 此處就是可數(shù)的枚舉對象,要匹配構(gòu)造器,實現(xiàn)抽象方法。*/MAN("man","男人","man people"){@Overridepublic void saySelf() {System.out.println("我是一個真正的男人啊");}},WOMAN("woman","女人","woman people"){@Overridepublic void saySelf() {System.out.println("我是一個真正的女人啊");}},GAY("gay","同性戀","gay people"){@Overridepublic void saySelf() {System.out.println("請你們尊重我們同性戀");}};/*** 模仿普通類* 1、和普通類一樣可以擁有靜態(tài)成員* 2、可以用普通成員和普通方法,但是枚舉類只能擁有私有構(gòu)造器,這樣只能在本類中進行調(diào)用,也就是限定的枚舉對象處。* 3、也可以擁有抽象方法,那么枚舉對象處必須重寫抽象方法,才能實例化對象。*/public static final String INFO = "我是性別的枚舉類";public static void test(){System.out.println("我是測試方法");}static{System.out.println(INFO);test();}//一般項目開發(fā)中,枚舉類型的私有變量都都只提供get方法,枚舉值設(shè)定在構(gòu)造器調(diào)用的地方設(shè)置。private String genderKind;private String genderInfoCn;private String genderInfoEn;private Gender(String genderKind, String genderInfoCn, String genderInfoEn) {this.genderKind = genderKind;this.genderInfoCn = genderInfoCn;this.genderInfoEn = genderInfoEn;}public String getGenderKind() {return genderKind;}public void setGenderKind(String genderKind) {this.genderKind = genderKind;}public String getGenderInfoCn() {return genderInfoCn;}public void setGenderInfoCn(String genderInfoCn) {this.genderInfoCn = genderInfoCn;}public String getGenderInfoEn() {return genderInfoEn;}public void setGenderInfoEn(String genderInfoEn) {this.genderInfoEn = genderInfoEn;}public abstract void saySelf();
}
下面我們來看下枚舉對象的API
下面我來看下測試方法:
package com.lcx.enum_test; /*** * 枚舉測試類* * @author qq1013985957**/ public class EnumTest {public static void main(String[] args) {Gender man = Gender.MAN;Gender woman = Gender.WOMAN;Gender gay = Gender.GAY;//Gender.MAN = Gender.WOMAN; 此處編譯報錯,由于枚舉對象實際上由static final修飾的Gender man1 = Gender.MAN;System.out.println("------------多次調(diào)用同一個枚舉對象-------------");System.out.println(man.hashCode());System.out.println(man1.hashCode());System.out.println("------------枚舉很多時候用在switch語句中-------------");genderDo(man);genderDo(woman);genderDo(gay);System.out.println("------------根據(jù)字符串獲取枚舉對象,調(diào)用枚舉對象的普通成員方法-------------");Gender man_ = Gender.valueOf("MAN");System.out.println(man_.getGenderInfoCn());man_.setGenderInfoCn("地球上的男人");System.out.println(man_.getGenderInfoCn());System.out.println("------------獲取所有枚舉對象,并遍歷-------------");for(Gender g : Gender.values()){g.saySelf();}}/*** 枚舉很多時候用在switch語句中* @param gender*/public static void genderDo(Gender gender){switch (gender) {case MAN:System.out.println("男人就是應(yīng)該對妻子好一點");break;case WOMAN:System.out.println("女人就是應(yīng)該相夫教子");break;case GAY:System.out.println("同性戀也應(yīng)該得到祝福");break;default:break;}}}測試結(jié)果:
package com.lcx.enum_test; /*** * 枚舉測試類* * @author qq1013985957**/ public class EnumTest {public static void main(String[] args) {Gender man = Gender.MAN;Gender woman = Gender.WOMAN;Gender gay = Gender.GAY;//Gender.MAN = Gender.WOMAN; 此處編譯報錯,由于枚舉對象實際上由static final修飾的Gender man1 = Gender.MAN;System.out.println("------------多次調(diào)用同一個枚舉對象-------------");System.out.println(man.hashCode());System.out.println(man1.hashCode());System.out.println("------------枚舉很多時候用在switch語句中-------------");genderDo(man);genderDo(woman);genderDo(gay);System.out.println("------------根據(jù)字符串獲取枚舉對象,調(diào)用枚舉對象的普通成員方法-------------");Gender man_ = Gender.valueOf("MAN");System.out.println(man_.getGenderInfoCn());man_.setGenderInfoCn("地球上的男人");System.out.println(man_.getGenderInfoCn());System.out.println("------------獲取所有枚舉對象,并遍歷-------------");for(Gender g : Gender.values()){g.saySelf();}}/*** 枚舉很多時候用在switch語句中* @param gender*/public static void genderDo(Gender gender){switch (gender) {case MAN:System.out.println("男人就是應(yīng)該對妻子好一點");break;case WOMAN:System.out.println("女人就是應(yīng)該相夫教子");break;case GAY:System.out.println("同性戀也應(yīng)該得到祝福");break;default:break;}}}測試結(jié)果:
總結(jié)
以上是生活随笔為你收集整理的JAVA 枚举类的初步理解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SDUTOJ3468_广度优先搜索练习之
- 下一篇: 一款回到顶部的 jQuery 插件,支持