java - 如何将 Java.Lang.Enum 转换为整数?

标签 java xamarin.android

在 monodroid 中,我有一个返回 Java.Lang.Enum 对象的 java 绑定(bind)。

当我尝试将此对象转换为它抛出的 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}

我很惊讶一个枚举不能转换成一个整数?

最佳答案

你可以使用 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,依此类推。

但是,不能保证枚举常量的序号位置保持不变,因此在不确定枚举定义中的更改(这会更改序号值)不会破坏您的代码的情况下,永远不要使用它.

关于java - 如何将 Java.Lang.Enum 转换为整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15840458/

相关文章:

c# - FindViewById 返回 null(只有一个,在 OnCreate 内部和 SetContentView 之后)

android - MvvmCross Android - 替代按钮命令的 RelativeSource 绑定(bind)

c# - Visual Studio (xamarin) 在执行此操作时卡在后台运行的 AAPT.exe 的每个构建、清理或重建上

java - 下载中断: peer not authenticated

java - 使用 Spring Boot 和 Docker 的外部属性文件

java - 从 Java 中的 ObjectInputStream 中连续读取对象

Xamarin iOS 图像在网格内重叠

java - Spring Boot 2.0.0M3 Spring 执行器

java - SWT:应用程序退出前清理

c# - Xamarin 安卓 : How to get information from the item clicked in custom listview