java枚舉類型enum用法 java5的新特性都有什么?枚舉enum?
java5的新特性都有什么?枚舉enum?java5的發(fā)布為類型系統(tǒng)帶來了三大新特性:枚舉、注釋和泛型。枚舉在某些方面類似于類,但其屬性只能是指定數(shù)量的實(shí)例,每個實(shí)例都不同,并且在類描述中指定。它主要
java5的新特性都有什么?枚舉enum?
java5的發(fā)布為類型系統(tǒng)帶來了三大新特性:枚舉、注釋和泛型。枚舉在某些方面類似于類,但其屬性只能是指定數(shù)量的實(shí)例,每個實(shí)例都不同,并且在類描述中指定。它主要用于“類型安全常量”,而不是當(dāng)時常用的小整數(shù)常量。枚舉構(gòu)造還允許額外的模式,這有時非常有用。注釋與接口相關(guān)。聲明注釋的關(guān)鍵字是@interface,它以@開頭,表示它是注釋類型。顧名思義,它們用于注釋java代碼元素,在不影響其行為的情況下提供附加信息。Java以前曾使用“markerinterface”來提供這種有限形式的元數(shù)據(jù),但是注釋被認(rèn)為更靈活。Java泛型提供參數(shù)化類型。其思想是,一個類型可以充當(dāng)其他類型對象的“容器”,而不必關(guān)心所包含類型的細(xì)節(jié)。組合到容器中的類型通常稱為類型參數(shù)。在Java5中引入的特性中,枚舉和注釋提供了一種新形式的引用類型,它需要編譯器進(jìn)行特殊處理,并有效地與現(xiàn)有的類型層次結(jié)構(gòu)分離。泛型為Java的類型系統(tǒng)增加了額外的復(fù)雜性,這不僅是因?yàn)榉盒褪羌兙幾g時特性,而且還要求Java開發(fā)人員注意編譯時和運(yùn)行時的類型系統(tǒng)彼此略有不同。
把string當(dāng)enum用,有性能損失嗎?
是的。
以C語言為例,在內(nèi)存中創(chuàng)建一個字符串至少需要存儲一個字符數(shù)組,因?yàn)樗枰鎯Y(jié)束標(biāo)識符;而枚舉實(shí)際上是一種結(jié)構(gòu),枚舉項(xiàng)可以定義為整數(shù),這比字符串存儲更方便、更便宜。
此外,如果字符串用作枚舉,則字符串很容易被錯誤寫入,并且枚舉被定義為數(shù)字常量。編譯器在編譯時容易發(fā)現(xiàn)錯誤,并提示開發(fā)人員及時改正,易于維護(hù)。