我被困在某些东西上:我有一些.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;
};
但是这些都不起作用。我也听说过工会,但是我绝对不确定如何使用工会。如果有人知道如何从idls获取Java.Object,那就太好了。如果不可能,也许有人知道如何处理工会!
预先感谢。
经过一些更深入的研究,似乎不可能获得java.lang.object。但是,您可以使用Any 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);
我给出了这三种类型的示例,但还有其他几种。