java拾遗录(一)
以前學(xué)java的時(shí)候經(jīng)常關(guān)注一些基本知識(shí),沒(méi)有涉及到實(shí)際應(yīng)用上,這幾天去公司實(shí)習(xí)。發(fā)現(xiàn)一個(gè)以前經(jīng)常聽(tīng)說(shuō)但是重來(lái)沒(méi)有親自用過(guò)的一個(gè)東西:枚舉類(Enum)
?
相比如常量來(lái)表示某些值,使用枚舉類可以很好的體現(xiàn)可讀性、安全性等特點(diǎn)。
在java中可以在工程中右鍵來(lái)新建一個(gè)自己的Enum類,他繼承了java.lang.Enum類,實(shí)現(xiàn)Serializable 和 Comparable 接口
構(gòu)造器是private修飾,該類的所有實(shí)例必須在第一行顯示的列出來(lái)。
在該類中包含values()方法可以返回這個(gè)枚舉類中包含的所有實(shí)例。同時(shí)可以用valueof(class,name)來(lái)創(chuàng)建一個(gè)已有的枚舉類實(shí)例
枚舉類最大的特點(diǎn)是希望他不被外接改變(大概是這種感覺(jué)吧)
e.g:enum
1 public enum Gender { 2 MALE("男"),FEMALE("女"); 3 private String name; 4 5 Gender(String name){ 6 this.name = name; 7 } 8 9 public String getName(){ 10 return name; 11 } 12 } public class EnumTest {public static void main(String[] args) {Gender g = Enum.valueOf(Gender.class, "FEMALE"); //得到相應(yīng)的enum實(shí)例System.out.println(g + " represent : " + g.getName());}}輸出結(jié)果:FEMALE ?represent : ?女
?
和類相似的,枚舉類也可以實(shí)現(xiàn)接口
1 public interface GenderDesc { 2 public void getInfo(); 3 }gender實(shí)現(xiàn)接口并且給出接口中方法的具體實(shí)現(xiàn):
public enum Gender implements GenderDesc{MALE("男"),FEMALE("女");private String name;Gender(String name){this.name = name;}public String getName(){return name;}@Overridepublic void getInfo() {System.out.println("interface test !!");} }EnumTest中實(shí)現(xiàn):
public class EnumTest {public static void main(String[] args) {Gender g = Enum.valueOf(Gender.class, "FEMALE");System.out.println(g + " represent : " + g.getName());g.getInfo();}}結(jié)果:
FEMALE represent : 女
interface test !!
在實(shí)現(xiàn)接口的時(shí)候也可以針對(duì)不同的對(duì)象實(shí)現(xiàn)不同的方法:
public enum Gender implements GenderDesc{MALE("男"){public void getInfo(){System.out.println(" it's a man !");}},FEMALE("女"){public void getInfo(){System.out.println("it's a woman");}};private String name;Gender(String name){this.name = name;}public String getName(){return name;}} 1 public class EnumTest { 2 public static void main(String[] args) { 3 Gender g = Enum.valueOf(Gender.class, "FEMALE"); 4 System.out.println(g + " represent : " + g.getName()); 5 g.getInfo(); 6 7 Gender g2 = Enum.valueOf(Gender.class, "MALE"); 8 System.out.println(g2 + " represent : " + g2.getName()); 9 g2.getInfo(); 10 11 } 12 13 }結(jié)果:
FEMALE represent : 女
it's a woman
MALE represent : 男
it's a man !
在上面的程序中,當(dāng)創(chuàng)建MALE,FEMALE的枚舉類時(shí)并不是直接創(chuàng)建Gender類,而是創(chuàng)建他的匿名子類,從編譯產(chǎn)生的class文件可以看出來(lái)。
?
轉(zhuǎn)載于:https://www.cnblogs.com/zhuojiniao/archive/2013/05/25/3099269.html
與50位技術(shù)專家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的java拾遗录(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Word2013中怎样设置同一文档内粘贴
- 下一篇: 学习总结9