1

在 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 ?

4

1 回答 1

5

您可以使用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 定义中的更改(这将更改序数值)不会破坏您的代码的情况下,永远不要使用它。

于 2013-04-05T18:11:32.540 回答