我有这个Java enum
,我需要与之交互:
// Parameter.java
public enum Parameter {
ExampleParameter1(45920L, 3, 127, ValueFormat.BINARY, true),
ExampleParameter2(45703L, 6, 6, ValueFormat.NUMERIC, true),
ExampleParameter3(73L, 4, 4, ValueFormat.ALPHANUMERIC, true),
ExampleParameter3(4512L, 2, 11, ValueFormat.ALPHANUMERIC, true);
( . . . )
private ValueFormat a
private int b;
private long c;
private boolean d;
private Parameter(long tag, int param, int min, ValueFormat format, boolean boo)
{
this.a = format;
this.b = min;
this.c = tag;
this.d = boo;
}
}
我想使用Djinni生成有效的C ++ Java接口,但是由于
djinni
的枚举在Java中生成public enum
(在我的情况下是正确的),在C ++中生成enum class
(具有int
底层类型) ,这是行不通的。这有可能吗?还是我必须使用Java和C ++实现以及手工制作的“绑定”来创建Djinni
interface
?在此先感谢您的帮助。
最佳答案
这种包含许多字段的enum
是Java相当独特的概念,而Djinni公开了在所有语言中通用的概念,该概念支持仅具有int值的枚举。如果您想要的是一个包含多个不同类型字段的对象,那么在Djinni中,您将需要一个record
。如果要公开用于自定义行为的方法,则可以使用接口,但对于纯数据则不需要。
无论如何,Djinni都会生成自己的类型。它不打算直接将现有类型公开为其他语言,因此,如果您不想直接使用该记录,则需要编写自己的转换函数以将Parameter转换为Djinni记录。