如何从 corba idl 获取 JAVA 对象

How to get a JAVA Object from corba idl

我被困在某件事上:我有一些 .idl 文件生成 java classes 从这些文件中定义的结构像这样:

struct MapServiceLayer{
        string id;
        string name;
        string parentId;
        OsTypes::StringSeq childrenIds;
    };

但是我需要一个 JAVA class 其中一个属性必须是 Java.Object 类型,因为当我实例化这个 class 时,它的属性可能是不同的类型。所以我尝试了这个:

struct MapServiceFeatureAttribute{
        OsTypes::ObjectSeq value;
    };

还有这个:

struct MapServiceFeatureAttribute{
            OsTypes::AnySeq value;
        };

但其中 none 有效。 我也听说过 Unions,但我绝对不确定如何使用它们。如果有人知道如何从 idls 中获取 Java.Object,那就太好了。如果不可能,也许有人知道如何处理工会!

提前致谢。

经过更深入的研究,似乎无法获得 java.lang.object。但是,您可以使用 Any corba 对象进行操作:

生成源代码后,您将拥有一个 class 属性类型为 Any,此类型允许您使用以下方式在其中存储不同的类型:

Any anyObj;
anyObj.insert_string(String s);
anyObj.insert_long(long l);
anyObj.insert_double(double d);

你显然可以通过使用 :

来获取值和选择的类型
String s1 = anyObj.extract_string(String s);
long l1 = anyObj.extract_long(long l);
double d1 = anyObj.extract_double(double d);

我给出了这 3 种类型的示例,但还有更多。