人生有涯,學海無涯列舉就是乙個語法糖效果。
定義乙個列舉,其實就是定義乙個繼承抽象類enum的類。
了解了enum,就能了解列舉。
public
abstract
class
enum
enum
>
implements
comparable
, serializable
列舉類實現了comparable和serializable介面,那麼也就意味著,每個列舉類都擁有比較(有序)和序列化功能。
public
abstract
class
enum
enum
>
implements
comparable
, serializable
public
final
intordinal()
}
這兩個屬性是列舉的內建屬性,name表示的是列舉值的名稱,ordinal表示的是列舉值的序號。
其作用後面再說
public
abstract
class
enum
enum
>
implements
comparable
, serializable
}
enum中只有這乙個構造器,其申明為protected就是為了繼承它的子類(我們定義的各種列舉)來呼叫的。
public
abstract
class
enum
enum
>
implements
comparable
, serializable
}
預設的equals方法底層就是使用實現的,所以在列舉的比較使用equals和都是可以的。前提是沒有在列舉類中重寫equals方法。
我們可以在自定義的列舉類中重寫該方法,來實現我們自己的比較方式。
public
abstract
class
enum
enum
>
implements
comparable
, serializable
protected
final
void
finalize()
private
void
readobject
(objectinputstream in)
throws ioexception,
classnotfoundexception
private
void
readobjectnodata()
throws objectstreamexception
}
這四個方法均是被禁用的方法:
public
abstract
class
enum
enum
>
implements
comparable
, serializable
}
這是實現了介面comparable中的方法。用於定義比較的方式,可以看出這裡是使用列舉值的序號作為比較條件的。
public
abstract
class
enum
enum
>
implements
comparable
, serializable
}
該方法的作用是獲取到指定列舉型別中指定列舉名稱的列舉值。
列舉是一種編譯器語法糖。
我們使用enum關鍵字定義乙個列舉,編譯之後,編譯器會對其進行加工,具體如下:
編譯成為class型別,並繼承自enum
新增靜態的values方法,用於獲取所有列舉值的陣列
新增valueof方法,實現enum中的valueof方法,可以根據具體的列舉值名稱字串獲取對應的列舉值
新增私有構造器,其中呼叫enum中定義的唯一的構造器
定義靜態常量列舉值
新增靜態塊為這些靜態列舉常量賦值
通過上面一些列加工之後,列舉類被解析為乙個普通的類,類名不變。
public
enum redactivestatusenum
public string getname()
public
void
setname
(string name)
public integer getvalue()
public
void
setvalue
(integer value)
public
static
void
main
(string[
] args)
}
深入討論C 的enum
呵呵,enum在實際中應用比較少,所以你會忽略它。但是,在這裡,我告訴你,enum 和 struct class一樣,都是使用者自定義型別。對呀!enum是使用者自定義型別,他有資料成員,還有成員函式!for example enum e 那麼 001 enum e e1 enum e不是物件,它是...
深入討論C 的enum
enum的秘密 一 enum是 使用者自定義型別 呵呵,enum在實際中應用比較少,所以你會忽略它。但是,在這裡,我告訴你,enum 和 struct class一樣,都是使用者自定義型別。對呀!enum是使用者自定義型別,他有資料成員,還有成員函式!for example enum e 那麼 00...
深入理解列舉型別enum
問題是git commit amend 引起的。一條commit已經push到遠端develop了,但是後來又在這條commit上進行了amend操作,導致這條commit的雜湊碼發生了變化。並且後續又在這條commit之後進行了n條commit操作。大概的情況畫了個簡圖,如圖所示。下面的綠色就是最...