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