引言:
Zeroc Ice支持元语的句法,即metadata sytax。还是那句老话,“是利剑,也是毒药。”元语的使用,在 Ice manual 3.4
中有详细介绍,本文不做详述。只挑最有诱惑地Generics & Collections的元语做以说明。
正文:
(1)ArrayList<T>语法模型
["java:type:java.util.ArrayList<MyTypeClass>"]
sequence<::MyTypeClass> arrayList;
这样slice2java编译后,便可在java侧生成基于ArrayList<MyTypeClass>的arraylist。
(2)实际应用
在实际使用时,大多数情况下“MyTypeClass”是自定义的,而且跟当前arraylist不在同一个包下。完善一下slice定义,可以如下。
// create by:hanjianxin
// at:11-08-02 16:40, for SOS
// resolve & comment by: zhaoningbo 11-08-03
#ifndef BOND__DEF
#define BOND__DEF
[["java:package:com.ccxe.bond.credit"]]
module dto {
struct BondIssueInformationCountDto{
string bondcode;
string id;
// ...
string crOrgName;
};
};
module service {
// *Attention please: when we use 'metadata', we recommend
// to use the full name of the Java Class. Just like the following!
// That because 'slice2java' has a tiny bug, which may do not fill
// the T , just in Generics<T>, with this full name. So ours code
// goes red.
["java:type:java.util.ArrayList<com.ccxe.bond.credit.dto.
BondIssueInformationCountDto>"]
sequence<dto::BondIssueInformationCountDto> listBondIssueInformationCountDto;
interface BondIssueInformationCountService{
//method
listBondIssueInformationCountDto getCreditOrgListFromBondCredit();
};
};
#endif
需要注意几点:
1,第7行为包声明元语。(省了一堆module~。=)
2,第23行为本文ArrayList<T>声明元语。使用时请注意,元语体中的所有类型均为java侧的类型(因为使用的
“java:type:”),因此“BondIssueInformationCountDto”可写为
“BondIssueInformationCountDto”或者
“com.ccxe.bond.credit.dto.BondIssueInformationCountDto”,但绝不能为
“dto::BondIssueInformationCountDto”。原因是两处定义的识别者不同。
3,第23行,特别注意“BondIssueInformationCountDto”为了slice2java生成的java文件安全可靠,必须用类的
全名“com.ccxe.bond.credit.dto.BondIssueInformationCountDto”。否则生成的文件可能会出现如下
的结果,而报错,却又不能手工导包(slice2java设计原因)。
public static java.util.List<com.ccxe.bond.credit.dto.
BondIssueInformationCountDto>
read(IceInternal.BasicStream __is)
{
java.util.List<com.ccxe.bond.credit.dto.
BondIssueInformationCountDto> __v;
// full name, OK!
// __v = new java.util.ArrayList
// <com.ccxe.bond.credit.dto.BondIssueInformationCountDto>();
// short name, ERROR! no import package, can not resovle as a type.
__v = new java.util.ArrayList<BondIssueInformationCountDto>();
// ....
return __v;
}
由上段代码可以看出,必须用类全名。
补充:
1,关于Ice slice, IceBox, IceGrid 及相关简单样例,你可以在google code上以svn免费获得。
2,在线浏览地址 numberIceDemo
。(本文样例路径:/numberIceSliceDemo/slice/com/number/temp/bondList.ice)
分享到:
相关推荐
eclipse Slice2Java 控件 jar ,eclipse Slice2Java 控件 jar
3. slice2java工具:掌握如何使用此工具将Slice代码转换为Java代码,以便于实现Ice在Java环境中的应用。 4. Apache Ant:学习Ant的基本概念,如任务、目标、属性和依赖,以及如何编写XML构建文件。 5. Ant脚本实践:...
这将根据`slice2java.xml`中的配置执行转换操作,将`slice`文件转换成Java源代码,然后可以编译这些Java代码以供ICE应用使用。 总结起来,这个资源提供了使用Ant自动化执行Zeroc ICE的`slice2java`工具的方法,帮助...
**Java库Slice:高效处理内存管理** 在Java编程中,内存管理是至关重要的,它直接影响到程序的性能和稳定性。通常,Java的内存分为堆内存(Heap Memory)和非堆内存(Non-Heap Memory),其中堆内存主要用于存储对象...
slice2js 将Slice文件编译为JavaScript。 安装 npm install slice2js --save-dev 用法 var slice2js = require ( 'slice2js' ) ; 方法 slice2js.compile(args [, options]) 返回一个对象。 args Array 传递给...
Slice 方式还可以应用于 FB、FC 块接口变量的访问。创建程序块(本例创建 FC 块,优化的块访问),在 Input 和 Output 分别创建变量“Input_1”和“Output_1”,数据类型分别是 DInt 和 Dword,可以看到这两个变量...
文档还专门列出了slice2cpp和slice2java命令行选项,分别用于C++和Java语言的slice映射。 在核心概念的后续章节中,文档介绍了ICE模块的具体使用方法,包括名字与作用域的定义、元数据使用等。同时,通过slice...
2. Slice的概念 在H.264编码中,slice是编码的基本单元,通常包含一组连续的宏块。Slice的主要作用是允许错误恢复,因为如果网络传输中某个slice丢失,只需要重传该slice,而不会影响整个帧的数据。Slice还可以用于...
在本文中,我们将深入探讨Flutter框架中的`center_slice`概念,并通过给定的`center_slice-master.zip`压缩包文件中的示例进行详细解释。`center_slice`是一种在UI设计中常用于图片或背景图像处理的技术,它允许图像...
强制转换为数组是泛型应用的另一个常见场景,通常使用 `slice` 方法实现: ```javascript var args = Array.prototype.slice.call(arguments); ``` 这行代码将 `arguments` 对象转换为真正的数组,以便可以使用...
2. **删除元素**:除了标准库中的`append`和`copy`函数,库可能提供了删除指定索引元素的功能,同时保持slice的连续性。 3. **查找元素**:快速查找slice中的特定元素,返回其索引或一个标识是否找到的布尔值。 4....
2. P Slice(Predicted Slice):基于前向预测的宏块,从先前的帧中获取参考信息进行预测,减少了数据传输量。 3. B Slice(Bi-directional Predicted Slice):使用双向预测的宏块,既参考前面的帧也参考后面的帧...
"Cut&Slice me"是一款专为Photoshop设计的切图神器,它被广泛应用于Web前端开发,帮助设计师高效地将图像切割成多个可独立使用的部分,以便在网页中精确显示。这款插件大大提升了切图的效率,尤其对于处理复杂的布局...
### 基于Slice的H.264并行视频编码算法 #### 一、引言 随着视频编码技术的发展,H.264作为一种新兴的视频标准,因其高效的视频压缩率和先进的编码技术而备受关注。然而,这也带来了更高的计算复杂度,使得视频编码...
切片采样(Slice Sampling)是一种在统计学和机器学习领域广泛应用的马尔科夫链蒙特卡洛(Markov Chain Monte Carlo, MCMC)方法。它通过构造一个包含目标分布的简单辅助函数(切片)来实现对复杂概率分布的采样。...
涉及`substring`或`slice`方法来截取字符串,以及DOM操作更新文本内容。 7. **“闪动”标题栏** (8 建“闪动”标题栏.html): 标题栏的闪动效果是通过定时器改变文本颜色或字体大小来实现的。使用`setInterval`和`...
《ice-builder-gradle:Gradle插件自动化Slice到Java的编译流程》 在IT行业中,构建工具的效率和灵活性对于开发团队来说至关重要。Gradle作为一款强大的、灵活的构建自动化工具,广泛应用于Java和其他语言的项目。...
1. **JAVA编程基础**:系统的基础架构建立在JAVA语言之上,因此,对JAVA语法、面向对象编程、异常处理、IO流、集合框架(如ArrayList、HashMap)等基础知识的掌握是必不可少的。此外,理解和运用JAVA的多线程技术,...
《H264编码解析:SPS、Slice与NAL单元详解》 在现代视频编码技术中,H264(也称为AVC)是广泛应用于高清视频传输、网络流媒体和存储的重要标准。H264编码高效且灵活,但其内部结构复杂,涉及到众多的专业术语和技术...