我在C ++中有头文件,其中声明了一些枚举。
// enum.h
enum event {
event_1,
event_2,
event_3,
event_4
}
C ++文件和标头在库.so。
中编译(使用GNU)现在我想在我的Java类中这样做:
// Test.java
public class Test {
private event currentEvent;
public test() {
if (currentEvent == event.event_1)
; // I will do my stuff
}
}
有人有建议吗?
由于
答案 0 :(得分:1)
我怀疑有这样做的直接方式。
对于C或C ++,您可以使用SWIG。它自动为C ++类和元素生成Java包装器。
21.3.5.5简单的枚举
这种方法类似于不安全的方法。每个枚举项目 也包装为静态最终整数。但是,这些整数是 没有生成一个以C / C ++枚举命名的类。相反,全球化 枚举生成到常量接口中。此外,定义了枚举 在C ++类中,它们的枚举项直接生成到Java中 代理类而不是Java代理类中的内部类。在 事实上,这种方法有效地包装了枚举,就像它们一样 匿名枚举和结果代码按照匿名枚举。该 实现在" enumsimple.swg"文件。
兼容性注意:SWIG-1.3.21及更早版本包装了所有枚举 使用这种方法。类型不安全的方法比这更好 一个和这个简单的方法只包括倒退 与这些早期版本的SWIG兼容。