IDL corba中的数组和对象出错

时间:2013-04-23 13:21:48

标签: java arrays object corba idl

我在IDL corba中遇到了数组和对象的问题 这是我的代码:

    interface ISinhVien
{
    SinhVien[] DocFile(in String filename);
    void GhiFile(in SinhVien[] sv,in String filename);
};

编译时出错:

CORBA_SinhVien>idlj -fall SinhVienIDL.idl
SinhVienIDL.idl (line 3):  SinhVien is an undeclared type.
        SinhVien[] DocFile(in String filename);
         ^
SinhVienIDL.idl (line 3):  Expected `<identifier>'; encountered `['.
        SinhVien[] DocFile(in String filename);
         ^
SinhVienIDL.idl (line 3):  WARNING: Identifier `String' collides with a keyword;
 use an escaped identifier to ensure future compatibility.
        SinhVien[] DocFile(in String filename);
                       ^
SinhVienIDL.idl (line 4):  SinhVien is an undeclared type.
        void GhiFile(in SinhVien[] sv,in String filename);
                         ^
SinhVienIDL.idl (line 4):  Expected `<identifier>'; encountered `['.
        void GhiFile(in SinhVien[] sv,in String filename);
                         ^
SinhVienIDL.idl (line 4):  WARNING: Identifier `String' collides with a keyword;
 use an escaped identifier to ensure future compatibility.
        void GhiFile(in SinhVien[] sv,in String filename);

有人帮助我,请!!!!!!!!!!!!!!!!!!!!

1 个答案:

答案 0 :(得分:1)

CORBA language specification不允许返回任何类型的数组,除非它们是第一个 typedefed

这里有2个选项 - 固定数组或sequences - 后者更灵活,允许通过实现代码设置数组大小。

interface SinhVien {
  boolean someOperation(in long id);
  // more operations
};

typedef sequence<SinhVien> sinhviens;


interface ISinhVien
{
    sinhviens docFile(in string filename);
    void ghiFile(in sinhviens sv, in string filename);
};

除此之外:注意不要将Java语法与IDL语法混合:string显示为所有小写