代码之家  ›  专栏  ›  技术社区  ›  Softlion

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

  •  1
  • Softlion  · 技术社区  · 11 年前

    在mondroid中,我有一个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?

    1 回复  |  直到 11 年前
        1
  •  5
  •   Bobulous    11 年前

    你可以使用 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定义的更改(会更改序数)不会破坏代码的情况下,永远不应该使用它。