我需要与之交互的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;
}
}
我想生成一个有效的C ++< - >使用Djinni的Java接口,但由于djinni
的枚举在Java中生成public enum
(在我的情况下是正确的),在C ++中生成enum class
(具有int
底层类型) ,它无法运作。
这甚至可能吗?或者我是否必须使用手工制作的#34;绑定"来创建带有Java和C ++实现的Djinni interface
?
提前感谢您的帮助。
答案 0 :(得分:1)
这种包含许多字段的enum
对于Java来说是一个非常独特的概念,而Djinni公开了所有语言中常见的概念,它支持只有int值的枚举。如果你想要的是一个包含多种不同类型字段的对象,那么在Djinni中你会想要record
。如果要公开自定义行为的方法,可以使用接口,但不需要纯数据。
无论如何,Djinni会产生自己的类型。它无意将现有类型直接暴露给其他语言,因此如果您不想使用该记录,则需要编写自己的转换函数将参数转换为Djinni记录直接