如何将Java.Lang.Enum强制转换为整数



在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定义的改变(这会改变序数值)不会破坏代码的情况下,绝不应该使用

最新更新