[英]How to cast a Java.Lang.Enum to an integer?
在monodroid中,我有一個Java綁定,該綁定返回一個Java.Lang.Enum對象。
當我嘗試將此對象轉換為int時,它會拋出異常。
System.InvalidCastException: Cannot cast from source type to destination type.
這是我在調試器的直接窗口中看到的內容:
state
{OPENING}
base: {Java.Lang.Enum}
IsClosed: false
IsOpened: false
ThresholdClass: 0x1d200832
ThresholdType: {System.MonoType}
我很驚訝一個枚舉不能轉換為int嗎?
您可以使用java.lang.Enum.ordinal()返回一個int值,該值代表該類型對象的Enum類定義中Enum常量的位置。
例如,如果Enum類的定義是這樣的:
enum Example {
Cat, Dog, Fish, Goat
}
那么Cat.ordinal()
將返回int值0, Dog.ordinal()
將返回int值1, Fish.ordinal()
將返回int值2,依此類推。
但是,不能保證Enum常量的序數位置保持不變,因此,在確定Enum定義的更改(這會更改序數值)不會破壞您的代碼之前,切勿使用此常量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.