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