IDL通达信 股票接口,接口定义语言
也叫“通达信 股票接口,接口描述语言”,是一个描述软件组件接口的语言规范。IDL用中立语言的方式进行描述,能使软件组件间相互通信。IDL通常用于RPC软件。IDL提供了一个“桥”来连接不同的系统。
基于IDL的软件系统包括:
Sun公司的ONCRPC,
TheOpenGroup的DistributedComputingEnvironment,
IBM的SystemObjectModel,
OMG组织的CORBA,
Facebook公司的Thrift,
用于WebService的WSDL。
类似于其它的接口描述语言,IDL以独立于语言和硬件的方式来定义接口,允许组件间的接口规范采用不同语言编写,通过RPC可以执行在不同的机器上。
JavaIDL把CORBA的能力移植到Java平台,提供了基于标准的互操作能力和连通性。JavaIDL使分布式带Web功能的Java应用程序能够透明地调用使用业界标准的OMGIDL的远程网络服务。
JavaIDL技术是基于接口的,定义在CORBAIDL之上,为想使用Java编程语言的CORBA程序员进行编程的。这就是“Businessasusual”的CORBA编程,支持Java技术,同样也支持C++或COBOL。
IDL(InterfaceDefinitionLanguag即接口定义语言,是CORBA规范的一部分,是跨平台开发的基础。IDL提供一套通用的数据类型,并以这些数据类型来定义更为复杂的数据类型。可变化IDL基本类型整数类型OMGIDL摒弃int类型在不同平台上取值范围不同带来的多义性的问题。常数定义常数可以是整数、字符、浮点数、字符串、Boolean、octet或枚举型,不能是any类型或用户定义的类型。OMGIDL数组类型IDLarray和sequence,可以轻易地被映射到实现语言中。序列可以包含所有类型的元素,不管是基本类型还是用户定义的类型。
OMGIDL文件概述
IDL文件应用过程如1所示。
OMGIDL文件编译过程
在语法规则方面,类似于C++或Java中关于接口或对象的定义,OMGIDL增加了一些构造方法支持IDL特有的方法调用机制。OMGIDL只是一种说明性的语言,支持C++语法中的常量、类型和方法的声明。采用OMGIDL这样的说明性语言,其目的在于克服特定编程语言在软件系统集成及互操作方面的限制,这正是CORBA的诱人之处,同样也体现出采用CORBA构造分布式应用程序在网络时代的强大生命力。OMGIDL已经为C、C++、Java等主要高级程序设计语言制定了IDL到高级编程语言的映射标准。项目开发人员可以根据需要选择自己最熟悉的编程语言来独立开发基于CORBA的应用,而对软件系统的互操作能力不产生影响。OMGIDL的语法规则
OMGIDL文件举例
OMGIDL词法规则
与C++和Java类似,采用以“/*”开始,以“*/”结束来注释一段代码,以“//”开始注释从“//”开始直至行尾的所有内容。IDL保留了47个关键字,程序设计人员不能将关键字用作变量或方法名。需要注意的是关键字的大小写,例如:typedefdoublecontext;//错误:定义的变量context是关键字typedefdoubleCONTEXT;//错误:CONTEXT与关键字context冲突
数据类型
any数据类型:引入该类型用于表示OMGIDL中任意数据类型。
常量
构造数据类型
数组类型
.模板类型
.接口
CORBA是由OMG组织制订的一种标准的面向对象应用程序体系规范。或者说CORBA体系结构是对象管理组织为解决分布式处理环境(DC中,硬件和软件系统的互连而提出的一种解决方案;OMG组织是一个国际性的非盈利组织,其职责是为应用开发提供一个公共框架,制订工业指南和对象管理规范,加快对象技术的发展。OMG组织成立后不久就制订了OMA(ObjectManagementArchitecture,对象管理体系结构)参考模型,该模型描述了OMG规范所遵循的概念化的基础结构。OMA由对象请求代理ORB、对象服务、公共设施、域接口和应用接口这几个部分组成,其核心部分是对象请求代理ORB。对象服务是为使用和实现对象而提供的基本服务集合;公共设施是向终端用户应用程序提供的一组共享服务接口;域接口是为应用领域服务而提供的接口;应用接口是由开发商提供的产品,用于它们的接口,不属于OMG标准的内容。ORB提供了一种机制,通过这种机制,对象可以透明的发出请求和接收响应。分布的、可以互操作的对象可以利用ORB构造可以互操作的应用。CORBA标准由对象管理组织设立并进行控制,CORBA定议了一系列API,通信协议,和物件/服务信息模型用于使得异质应用程序能够互相操作,这些应用程序用不同的程序语言编写,运行在不同的平台上。CORBA因此为定义明确的物件提供了平台和位置的透明性,这些物件是分布式计算平台的基础。CORBA分布计算技术,是由绝大多数分布计算平台厂商所支持和遵循的系统规范技术,具有模型完整、先进,独立于系统平台和开发语言,被支持程度广泛的特点,已逐渐成为分布计算技术的标准。COBRA标准主要分为3个层次:对象请求代理、公共对象服务和公共设施。最底层是对象请求代理ORB,规定了分布对象的定义和语言映射,实现对象间的通讯和互操作,是分布对象系统中的'软总线';在ORB之上定义了很多公共服务,可以提供诸如并发服务、名字服务、事务(交易)服务、安全服务等各种各样的服务;最上层的公共设施则定义了组件框架,提供可直接为业务对象使用的服务,规定业务对象有效协作所需的协定规则。CORBA(公共对象请求代理架构):这是个和微软com,com+齐名的同类软件技术规范,由OMT提出。用于在不同进程(程序)之间,甚至是不同物理机器上的进程(程序)之间通讯。底层技术依靠RPC[远程过程调用]实现。面向对象的软件,以数据为中心设计,对象类既具有模块的封装性和类属等特性,还具有继承特性,极大地提高了类的可扩充性和可再用能力。对象类较之于传统软件的功能模块而另具有的优点是:易于理解,具有完整的语义特征;易于扩充和修改,具有较高的通用性和适应性;易于构造组装,具有规范的外部接口。开发应用组件必须遵循标准,以保证软件组件的互操作性,只有遵循统一的标准,不同厂商的、不同时期的、不同程序设计风格的、不同编程语言的、不同操作系统的、不同平台上的软件或软件部件才能进行交流与合作。为此,OMG提供了一个对象标准CORBA,它定义了一个网连对象的接口,使得对象可以同时工作。基于CORBA的对象请求代理ORB为客户机/服务器开发提供了中间件的新格式。作为OMG成员的微软公司撇开CORBA而另辟了COM,即组件对象模型,并把COM定位成基于对象的软件开发模型,尽管COM被认为是微软鼓噪出来的技术,但支持COM的开发工具却不断增多,其中大部分来自于微软,包括VisualBasic和VisualC++。公共对象请求代理结构:CORBA标准全球性网络使线上的所有设备和软件成为全球共享的浩瀚的资源,计算机环境也从集中式发展到分布式环境,开放式系统的发展使用户能够透明地应用由不同厂商制造的不同机型不同平台所组成的异构型计算资源,分布式处理和应用集成自然而然地成为人们的共同要求,那么什么是分布式处理和应用集成呢?它们的功能和关键技术是什么呢?简单地讲,分布式处理和应用集成就是指在异构的、网络的、物理性能差别很大的、不同厂商的、不同语言的信息资源的基础上构建信息共享的分布式系统,并且能够有效地进行应用系统和分布式处理的集成。分布式处理的关键在于定义可管理的软件构件,即面向对象技术中的“对象”。应用集成的关键在于为跨平台、跨机种、跨编程语言的产品提供统一的应用接口。OMG组织针对当今信息产业的要求,公布了CORBA标准,即公共对象请求代理体系结构,这是一个具有互操作性和可移植性的分布式面向对象的应用标准。CORBA的核心是对象请求代理ORB,它提供对象定位、对象激活和对象通讯的透明机制。客户发出要求服务的请求,而对象则提供服务,ORB把请求发送给对象、把输出值返回给客户。ORB的服务对客户而言是透明的,客户不知道对象驻留在网络中何处、对象是如何通讯、如何实现以及如何执行的,只要他持有对某对象的对象引用,就可以向该对象发出服务请求。CORBA允许用户以两种不同的方式提出对象请求:静态调用:通过给定接口的存根,在编译了对象代码后,进入客户端的程序。静态调用必须在编译时就知道对象及其类型。动态调用:通过ORB的动态调用接口DII,在运行时生成访问对象的代码。不管客户以哪一种形式提出请求,ORB的任务是:找出所要对象的位置,激活该对象,向对象传递此请求。对象执行所请求的服务后,把输出值返回给ORB,然后再由ORB返回给客户。CORBA的重要概念是:
.对象连接
.接口定义语言
.动态调用接口
.接口公用库
什么是JavaIDL
----JavaIDL可实现网络上不同平台上的对象相互之间的交互,该技术基于通用对象请求代理体系结构CORBA规范说明。IDL是不依赖于语言的接口定义语言,所有支持CORBA的语言都有IDL到该语言的映射。就像其名字所表示的那样,JavaIDL支持到Java语言的映射。CORBA规范说明和IDL映射是由OMG定义的。OMG由700多个成员组成,Sun公司是其成员之它在定义IDL到Java映射的工作中起了主要作用。
----JDK1给Java开发人员提供了开发100%纯Java分布式应用的功能,即远程方法调用JavaRMI。而Java2平台提供的JavaIDL可以在分布式应用中使用非Java语言,也就是说,Java2平台提供的ORB可以和任何遵从CORBA规范的ORB互操作,包括IONATechnologies的Orbix、VisigenicSoftware的VisiBroker、IBM的ComponentBroker等。目前,主要的Web浏览器实现的主要是JDK1中的功能。利用Sun公司提供的Java插件可以使浏览器具备Java2平台的所有特征。
----需要说明的是,Java2平台提供了两种不同的方法来构造分布式应用系统,即JavaRMI和JavaIDL,它们具有相似的特征和功能,JavaRMI支持用Java语言写的分布式对象,JavaIDL可以与支持CORBA的任何程序设计语言如C、C++、COBOL等写的分布式对象交互。这两种方法各自具有不同的特点:
----100%纯Java和对遗产应用系统的支持。JavaRMI是对分布式应用系统的100%纯Java解决方法,具有Java的'Writeonce,runanywhere'的优点。用JavaRMI开发的应用系统可以部署在任何支持Java运行环境的平台上。
----相反,JavaIDL是基于CORBA规范标准的技术,可以远程调用非Java语言编写的对象,因此JavaIDL提供了对那些用非Java语言开发的遗产应用系统的支持。
----使用不同的通信协议。JavaRMI和JavaIDL目前使用不同的通信协议,JavaIDL使用CORBA/IIOP协议,IIOP协议可以使位于不同平台上、用不同语言写的对象以标准的方式进行通信;JavaRMI目前使用Java远程消息交换协议JRMP进行通信,JRMP是专为Java的远程对象制定的协议,不过Sun和IBM已经宣布将来会支持在RMI中使用IIOP协议,以便和遵从CORBA规范的远程对象通信。
----(通过引用调用对象还是通过值调用对象。在JavaIDL中,客户端通过引用与远程对象交互,即客户机使用桩对远程服务器上的对象进行操作,但并不拷贝服务器上的对象。
----相反,RMI使得客户机可以通过引用和远程对象交互,也可以把远程对象下载到客户机运行环境进行操作,由于在RMI中使用的对象都是Java对象,因此RMI使用Java中的对象串行化功能在服务器和客户机之间传输对象。不过CORBA规范的以后版本将包括按值调用对象的功能。
----JavaRMI和JavaIDL各有自己的优缺点,从某种意义上说,RMI可以看作是RPC的面向对象版本。RMI的最大优势是可以用它来提供100%纯Java的解决方案,这意味着构造RMI应用系统将比较简单,但这也正是基于RMI的应用系统的一个缺点,即只能在Java环境中运行,不能充分利用遗产应用系统。
----JavaRMI和JavaIDL均可满足一定范围的用户需求,都适用于一定范围的应用,两者之间存在着重叠,有些应用可使用两者中的任何一种技术开发,但对于某些应用来说,采用其中的某一种比采用另一种更为恰当。
使用CORBA和JavaIDL
----从1989年以来,OMG一直致力于开放的软件总线体系结构CORBA的规范说明的定义,利用CORBA,不同供应商开发的、运行在不同平台上的构件可以互操作,而不管该对象位于何处,用什么语言实现。JavaIDL使得Java也支持CORBA规范说明。作为Java企业计算API的一部分,JavaIDL可以保证企业异质计算中的无缝互操作性和可连接性。
----CORBA对象和一般的程序设计语言中的对象的区别在于:
CORBA对象可以位于网络中的任何位置;
CORBA对象可以和其他平台上的对象交互;
CORBA对象可以用任何程序设计语言编写,只要有IDL到该语言的映射即可。
----接口定义语言IDL用于定义CORBA对象的接口,所有的CORBA对象都支持IDL接口。IDL语法和C++非常类似,利用JavaIDL,可以在Java中定义、实现、存取CORBA对象。对于每个IDL,idltojava生成一个Java接口和其他一些必要的.java文件,包括一个客户端桩和服务器端骨架。
----1说明了从客户端到服务器发送一个消息请求的过程,其中客户端也可以是一个CORBA对象:
----客户机不需要了解CORBA对象的位置与实现细节,也不需要了解哪个ORB用于存取对象。
----在客户端,应用系统包括远程对象的引用,对象引用使用桩方法作为远程方法的代理,这个方法事实上在ORB中的,所以调用桩方法会调用ORB的连接功能,ORB会把对桩方法的调用传递到服务器端。
----在服务器端,ORB利用骨架代码把远程调用转换成本地对象的方法调用,骨架需要对调用和参数的格式进行转换。当方法返回时,骨架对结果进行变换,然后通过ORB把结果返回给客户机。
----不同的ORB之间通过IIOP协议进行通信,IIOP是建立在TCP/IP之上的协议。
----CORBA目前还处于发展阶段,一些标准还在定义之中,但CORBA中的大部分基本结构已经定义,许多软件供应商已根据CORBA的定义作了很多开发工作,JavaIDL就是该规范说明的一个实现。但在Java2平台中,并没有实现CORBA规范说明中的所有特征,如:
接口库:在一般的JavaIDL操作中并不需要接口库,Java客户机可以存取其他的接口库,如C++ORB提供的接口库;
RMI/IIOP协议;
按值调用对象;
IDL中的一些类型如wchar、wstring、longdouble等。
IDL到Java的映射
----为了使Java支持CORBA规范说明,需要一个把IDL中的元素映射为Java中元素的标准途径,Sun已经制订了两者之间的映射规则,并提供了编译器idltojava,以便从IDL得到相应的桩和骨架。
----下表列出了一些IDL中元素和Java中元素的映射关系。
----和Java中的接口一样,IDL接口不包含方法的具体实现,Java开发人员需在Java类中提供对这些方法的具体实现。
使用JavaIDL开发应用的过程及实例
----用JavaIDL开发分布式应用系统一般可分为五个步骤:
----定义远程接口
----用IDL定义远程对象的接口,使用IDL而不是Java语言是因为idltojava编译器可以自动地从IDL产生Java语言的桩和骨架源文件,以及和ORB连接时所需要的一些代码。使用IDL,开发人员可以用其他语言来实现客户机和服务器。如果要为一个已经存在的CORBA服务实现客户机,或为一个已经存在的客户机实现服务,则首先要给出IDL接口,然后运行idltojava编译器产生桩和骨架,在此基础上再进行实现。
----编译远程接口
----在IDL文件运行idltojava编译器,产生Java版本的接口,以及桩和骨架代码文件,这些代码文件使得应用程序可以和ORB相连接。
----实现服务器
----把idltojava编译器产生的骨架和服务器应用程序集成在一起,除了要实现远程接口中的方法之外,服务器代码还要包括启动ORB以及等待远程客户机的调用等部分。
----实现客户机
----类似地,以桩作为客户端应用程序的基础,客户机建立在桩之上,通过JavaIDL提供的名字服务查询服务器,获得远程对象的引用,然后调用远程对象中的方法。
----启动应用程序
----一旦实现了服务器和客户机,就可以启动名字服务,接着启动服务器,然后运行客户机。
----下面以一个经典的HelloWorld程序来说明具体的开发过程。HelloWorld包含一个操作,该操作返回一个字符串并打印出来,Client和Server之间的通信过程如下:
----客户端应用程序或小应用程序调用HelloServer的sayHello操作;
----ORB把调用传递到已注册的服务对象;
----服务对象运行sayHello方法,返回一个Java字符串;
----ORB把该字符串返回给客户机;
----客户机打印该字符串的值。
----尽管HelloWorld程序比较简单,但它涉及到的任务和几乎任何一个使用CORBA静态调用的分布式应用系统所涉及到任务相同,2说明了如何用CORBA在客户机和服务器之间实现经典的'HelloWorld'程序。
----首先是定义Hello.idl,下面是用IDL描述的Hello.idl,只有一个操作,该操作返回一个字符串。
{
{
};
};
----然后把Hello.idl文件映射为Java源代码文件,用以下命令编译Hello.idl文件:
----要完成该应用程序,还要分别在这五个文件的基础上提供服务器端和客户机端的实现。
----CORBA服务器程序的结构和大部分Java应用程序的结构一样,即导入所需要的包,声明服务器类,定义main方法,处理一些例外等。CORBA服务器要有一个ORB对象,每个服务器实例化一个ORB,并向其注册服务对象,因此当ORB接收到调用请求时可以寻找到服务器。最后是服务对象的管理,服务器是一个进程,实例化了一个或多个服务对象,服务对象具体实现接口中说明的操作。HelloServer和命名服务一起工作,使得服务对象对于客户机来说是可用的,服务器需要对名字服务的对象引用,可以向名字服务注册,并保证向Hello接口的调用被路由到其服务对象上,最后是等待客户机的调用。
----CORBA客户机的结构和大部分Java应用程序的结构基本相似,即导入所需要的包、声明应用类、定义main方法、处理一些例外等。另外和服务器程序一样,一个CORBA客户机也需要本地的ORB来执行所有的配置工作,每个客户机实例化一个oromCORBORB对象,然后向该对象传递一些必要的信息以进行初始化,最后是利用ORB取得所需要的服务。一旦一个应用有了ORB,即可通过ORB来确定应用所需要的服务的位置,在本例子中即是Helloserver。为了调用CORBA对象中的操作,客户端应用要有对该对象的引用,有很多种方法可以得到这种引用,如调用ORresolve_initial_references或使用其他的CORBA对象,当在分布式环境中没有命名服务可用时,CORBA客户机使用字符串化对象引用来得到其第一个对象。
接口定义语言
一个IDL文件定义公共的应用程序接口,通过服务程序中的对象向外公布。一个CORBA对象的类型称作接口,与C++中的类或者Java中的接口类似。IDL接口支持多重继承。
一个IDL文件示例如1所示。IDL接口可以包括方法和属性。很多人都误以为一个IDL接口的属性类似于C++中的示
例变量的概念。这是错误的。一个属性只是在语法上对一对儿get-和set-类型方法的称谓。属性可以是只读的,这种情况时该属性只有一个get-类型的方法。
};
};
};
*****************************************************************************************************
:IDL文件示例
方法的参数有一个指定的方向,可以是in,out或者inout。方法同样可以有返回值。方法在某块出错时可以引发一个异常。有30多种预定义的异常类型,称作系统异常,他们都可以由方法抛出,尽管在实际系统中CORBA运行时系统引发的异常多于应用程序代码引发的。除了预定义的系统异常,新的异常类型可以在IDL文件中定义,这些异常可称为用户定义的异常。方法署名的raises子句指定该方法可能抛出的用户定义异常。
方法的参数可以是内置类型的一种——例如:string,boolean或者long,也可以是IDL文件中定义的用户自定义的类型。用户定义类型可以是一下的任意一种:
结构体。类似于C/C++中的结构体或者Java中只包含公共域的类。
序列。集合类型,就像一个可以增或减的一维数组。
数组。IDL数组的维度在IDL文件中指定,所以数组是固定大小的,这就是说他不能在运行时增或者减。数组在IDL中很少用到。序列类型更灵活,所以用的更多。
自定义。给现存的类型定义一个新名字。例如,下面的语句定义age可用来描述short。
联合体。该类型可以在运行时保留多个值中的一个。例如:
};
一个Foo类型的实例可以保存一个boolean、long或者string值。前面的case标记表明当前是哪种值。与IDL联合体相同的理念可以在很多面向过程的语言中找到。他们很少在面向对象的语言中使用,因为多态统称能以更好的方式达到同样的目的。
枚举类型。枚举在概念上类似于一个常整型集合的声明。例如:
从本质上说,CORBA使用整数表达不同的枚举值,使用枚举声明的好处在于很多编程语言都有对它的内在支持,或者相似的机制,可以用来进行强类型判识,这样程序员就不会将city变量和color变量相加。
定点类型。定点类型保存定点数值,而float和double类型保存浮点数值。浮点计算适用于很多用途,可能导致几个小数位后的舍入误差。对比来说,定点数值可能比对应的浮点数值占用更多的内存空间,但是他们有避免舍入误差的优点。使用定点数值趋向于限制在适当的应用领域。例如金融计算和数字信号处理等。尽管一个工程使用定点类型数字,它很可能使用定点计算作为细节实现却不将定点数字的使用公布为公共的IDL接口。由于以上原因,定点类型很少在IDL文件中声明。
值类型。在2节、96页讨论。
IDL类型可以组织在一个module中。module结构与C++中的namespace或者Java中的package有异曲同工之妙,也就是说,他事先给类型名称前添加了一个前缀,以避免命名空间冲突。IDL中的域操作符是“::”。例如,
Finance::Account是Finace模块中定义的Account类型的全域名
编译IDL后生成的Java类
为接口客户提供有用的助手功能的类。编译器为narrow功能自动生成代码,这种narrow功能让客户将CORBA对象引用强制转换为接口类型。还提供了绑定(bin功能,用户可以用其查找该类型的对象。
含有接口类型的公共实例成员的类。用户和服务器用其来以方法调用的out和inout参数的形式传递接口类型的对象
为接口对象实现客户端存根的类,它是真正的提供排列功能的接口的内部实现。
定义了IDL功能的类。
CORBA支持两种类型的程序:基于继承(inheritance-base的和基于委托的(delegantion-base。Tie类只是扩展了POA,但它没有提供自己的实现语义。它把所有的工作委托到一个实现对象上。每一个Tie对象存储一个实现对象的引用。
委托方法可用两种类实现IDL接口:一个IDL生成的Tie类,该类继承自POA,但是委托所有的调用到一个实现类;一个实现IDL生成的Operations接口的类,它定义了IDL的功能。
为接口实现CORBA服务器端框架的类。这个类将CORBA和Java对象模型组合到一起。它是通过使用一个实现了Java的oromCORBObject接口的Java对象做到这一点的。这是CORBA根接口,所有得CORBA对象都必须实现它。
CORBAIDL-to-Java映射
通用结构:
CORBA模块
ORBAIDL模块(modul映射成与IDL模块同名的Java包
CORBA异常
CORBA定义了两类异常
systemexceptions一种被CORBA定义的异常
Iuser-definedexceptions由用户在IDl中定义的异常
CORBA参数
CORBA定义了三种参数传递模式:in、out和inout。Java只支持in。
由于Java中没有IDLout和inout的对应物,对IDLout和inout参数,IDL-to-Java映射必须提供一些附加的机制来支持值传递(并返回结果)。
映射定义Holder类,这些Holder类在Java中实现附加的参数传递模式。对每个IDLout或inout参数,客户必须实例化一个适当的Holder类的实例(它是通过值传递的)。
Helper类包含用于不同方式操作IDL的方法。
Helper类提供客户可以用来操作类型的静态方法,这些包括该类型的任何插入和取出操作、获得库(repository)ID、获得类型码(typecod、从流中读取类型并把类型写入流中。
映射IDL接口的Helper类提供一个静态的narrow方法,可以用于进行强制类型转换。
CORBA属性
CORBAIDL接口可以拥有属性,这些都是类型域中set和get操作所需的。
每个属性都被映射到一对与属性同名的重载Java访问器和修改器方法上。
结构类型:
sequence(序列)
一个可变大小的一维元素序列,其中元素可以是任何IDL定义的类型。可以限制序列的最大长度。
struct(结构)
可以使用结构将多种类型的命名字段组装在一起
每个struct都有两个构造函数。一个是默认的构造函数,把结构中的所有字段设置为空。第二个构造函数把结构字段作为参数并初始化每个字段
union(联合)
用于在任何给定的时间只引用几个数据成员中的一个(任何时间,内存中只能有一个成员)。联合使用discriminator标签值来显示该值含有联合中的那个成员。
Any是一个保留其类型的自描述数据结构,它使你可以在运行时用类型安全的转换函数提取和插入预定义的IDL类型的值。
Any类型让你指定一个属性值、参数或返回类型,该类型包含一个在运行时而不是在编译时确定的任意类型。可以使用Any传递任何东西。
IDL-to-Java的映射
文章为作者独立观点,不代表 股票程序化软件自动交易接口观点