0

enum我有这个需要与之交互的Java :

// 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' 的枚举public enum在 Java(在我的情况下正确)和enum classC++(具有int基础类型)中生成,所以它不能工作。

这甚至可能吗?或者我是否必须interface使用手动制作的“绑定”创建一个具有 Java 和 C++ 实现的 Djinni?

提前感谢您的帮助。

4

1 回答 1

1

这种enum包含许多字段的方式对于 Java 来说是一个非常独特的概念,而 Djinni 公开了所有语言中通用的概念,它支持只有一个 int 值的枚举。如果你想要的是一个包含多个不同类型字段的对象,那么在 Djinni 中你会想要一个record. 如果您想为自定义行为公开方法,则可以使用接口,但对于纯数据不需要这样做。

在任何情况下,Djinni 都会生成自己的类型。它不打算将现有类型直接暴露给其他语言,因此如果您不想直接使用记录,则需要编写自己的转换函数将参数转换为 Djinni 记录。

于 2017-10-28T02:53:28.593 回答