java - 如何从 corba idl 获取 JAVA 对象

标签 java corba idl

我被困在某件事上:我有一些 .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/

相关文章:

java - Log4j2 无法使用 json 配置文件

java - 哪种方法更适合用于登录表单 doget() 或 dopost()

c++ - 基于 Boost::ASIO 的 CORBA 库的推荐

java - 为什么我的 CORBA 应用程序没有运行?

COM - 返回一个对象接口(interface)数组

c++ - 如何在 IDL 中声明 IN、OPTIONAL 参数以及 OUT、RETVAL 参数

Java - 停止 hibernate 线程

java - 如何在单元测试期间将资源文件路径交换为测试文件?

rmi - RMI 和 Corba 有什么区别?

vba - 为什么 IDL 默认值看起来是四舍五入的?