我被困在某件事上:我有一些 .idl 文件,它们从这些文件中定义的结构生成 java 类,如下所示:
struct MapServiceLayer{
string id;
string name;
string parentId;
OsTypes::StringSeq childrenIds;
};
但是我需要一个 JAVA 类,其中它的属性之一需要是 Java.Object 类型,因为当我实例化这个类时,它的属性可能是不同的类型。所以我尝试了这个:
struct MapServiceFeatureAttribute{
OsTypes::ObjectSeq value;
};
还有这个:
struct MapServiceFeatureAttribute{
OsTypes::AnySeq value;
};
但这些都不起作用。 我也听说过 Unions,但我绝对不确定如何使用它们。如果有人知道如何从 idls 获取 Java.Object,那就太好了。如果不可能,也许有人知道如何处理工会!
提前致谢。
最佳答案
经过一些更深入的研究,似乎不可能获得 java.lang.object。但是,您可以使用任何 corba 对象来实现此目的:
生成源代码后,您将拥有一个具有 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 种类型的示例,但还有更多类型。
关于java - 如何从 corba idl 获取 JAVA 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59177850/