当前位置: 首页 > 面试题库 >

如何在JNA中映射枚举

詹夕
2023-03-14
问题内容

我有以下枚举如何在jna中映射?

该枚举在结构上进一步引用。

typedef enum
{
 eFtUsbDeviceNotShared,
 eFtUsbDeviceSharedActive,
 eFtUsbDeviceSharedNotActive,
 eFtUsbDeviceSharedNotPlugged,
 eFtUsbDeviceSharedProblem
} eFtUsbDeviceStatus;

阿卜杜勒·哈利克(Abdul Khaliq)


问题答案:

如果使用的是JNA,则可能要显式指定Java中的枚举值。默认情况下,Java的基本枚举类型并没有真正为您提供该功能,您必须为EnumSet添加一个构造函数(请参阅this和this)。

编码C枚举的一种简单方法是使用包装在与枚举同名的类中的公共静态最终const int。您可以从Java枚举中获得大部分功能,但分配值的开销却少一些。

有一些很好的JNA例子,包括下面的代码片段(其被复制)都可以在这里。

假设您的C代码如下所示:

enum Values {
     First,
     Second,
     Last
};

然后,Java看起来像:

public static interface Values {
    public static final int First = 0;
    public static final int Second = 1;
    public static final int Last = 2;
}


 类似资料:
  • 问题内容: 在hibernate状态下,是否可以定义一个类到一组枚举的映射? 我已经找到了有关如何定义集合映射的示例,也已经找到了有关如何映射枚举的单独示例,但是我无法弄清楚如何为一个类定义枚举。 有人可以给我提供一个例子吗? 它是基于现有应用程序构建的,因此无法更改数据库架构。 这就是我要建模的关系。Wicket是普通类,而WicketType是Java枚举。 再次感谢 问题答案: 难道这不是你

  • 问题内容: 我需要预先将未实现接口的枚举映射到现有数据库,该数据库使用将该枚举存储在与所有者类相同的表中。 在这种情况下应如何处理映射?持久化到数据库不会改变,因为实现该接口的所有枚举都将具有不同的值,但是我不确定应如何从数据库中检索对象(我是否需要自定义映射器,它将尝试实例化一个使用指定的enum类进行枚举吗?Hibernate本身是否支持此功能?)。 问题答案: 可以创建一个自定义(例如thi

  • 问题内容: Hibernate提供的注释支持使用或的两种类型的映射。当我们使用映射时,它使用的“名称” 而不是Enum的表示形式。在数据库列仅包含一个字符的情况下,这是一个问题。例如,我有以下枚举: 当我坚持枚举使用,即hibernate尝试在数据库中存储的值是开放的。但是,我的数据库列仅包含一个字符,因此会引发异常。 克服这个问题的一个办法是改变枚举类型持有单个字符(如,代替,)。但是,这降低了

  • 我正在尝试存储和检索一个enum类,以便稍后可以找到正确的类型(基于配置)并对其调用ValueOf来解析字符串。如何放置/获取然后调用的值? 在伪代码中,它看起来像这样: 我怎么能这样呢? 为了提供一些关于我为什么这样做的背景-我有多个这样的枚举类型,我得到一个输入,告诉我它是什么样的枚举(在文本中)和枚举中的一个值,所以我想从映射中查找枚举类,然后调用它的静态ValueOf,它将正确解析。 注意

  • 我试图使用流API代替循环,并有以下问题。 我有一个方法,它接受一个Enum并返回一个SortedMap。我将每个映射存储在一个列表中,但是我现在希望将每个SortedMap存储在一个映射中,Enum名称为键,从返回的SortedMap作为值,如何使用流API执行此操作? 当前工作列表方法 我使用收集器的错误尝试。toMap。。 工作回路,工作回路

  • 问题内容: 我需要预先将没有实现接口的枚举映射到现有数据库,该数据库使用将该枚举存储在与所有者类相同的表中。 在这种情况下应如何处理映射?持久化到数据库不会改变,因为实现该接口的所有枚举都将具有不同的值,但是我不确定应如何从数据库中检索对象(我是否需要自定义映射器,它将尝试实例化一个使用指定的enum类进行枚举吗?Hibernate是否本身支持此功能?)。 问题答案: 可以创建一个自定义(例如th