在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}
我很惊讶enum不能转换为int ?
您可以使用java.lang. enumr .ordinal()返回一个int值,该值表示该类型对象的Enum类定义中Enum常量的位置。
例如,如果Enum类的定义是这样的:enum Example {
Cat, Dog, Fish, Goat
}
则Cat.ordinal()
返回int值0,Dog.ordinal()
返回int值1,Fish.ordinal()
返回int值2,依此类推
然而,枚举常量的序数位置不能保证保持不变,所以在没有确定Enum定义的改变(这会改变序数值)不会破坏代码的情况下,绝不应该使用