`
zhaoningbo
  • 浏览: 619346 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

slice2java元语metadata泛型ArrayList应用

阅读更多

引言:

 

    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)

 

 

 

 

 

 

1
1
分享到:
评论

相关推荐

    eclipse Slice2Java

    eclipse Slice2Java 控件 jar ,eclipse Slice2Java 控件 jar

    Zeroc ICE中间件slice2java的ant脚本

    3. slice2java工具:掌握如何使用此工具将Slice代码转换为Java代码,以便于实现Ice在Java环境中的应用。 4. Apache Ant:学习Ant的基本概念,如任务、目标、属性和依赖,以及如何编写XML构建文件。 5. Ant脚本实践:...

    Zeroc ICE中间件slice2java的ant脚本(v1u0_0)

    这将根据`slice2java.xml`中的配置执行转换操作,将`slice`文件转换成Java源代码,然后可以编译这些Java代码以供ICE应用使用。 总结起来,这个资源提供了使用Ant自动化执行Zeroc ICE的`slice2java`工具的方法,帮助...

    slice:Java库,可有效处理堆内存和堆外内存

    **Java库Slice:高效处理内存管理** 在Java编程中,内存管理是至关重要的,它直接影响到程序的性能和稳定性。通常,Java的内存分为堆内存(Heap Memory)和非堆内存(Non-Heap Memory),其中堆内存主要用于存储对象...

    npm-slice2js:Slice到JavaScript编译器的Npm软件包

    slice2js 将Slice文件编译为JavaScript。 安装 npm install slice2js --save-dev 用法 var slice2js = require ( 'slice2js' ) ; 方法 slice2js.compile(args [, options]) 返回一个对象。 args Array 传递给...

    西门子S7-1200PLC如何使用Slice方式对变量进行寻址?.docx

    Slice 方式还可以应用于 FB、FC 块接口变量的访问。创建程序块(本例创建 FC 块,优化的块访问),在 Input 和 Output 分别创建变量“Input_1”和“Output_1”,数据类型分别是 DInt 和 Dword,可以看到这两个变量...

    zeroc ice教程 ice环境配置 Ice中文教程 C++ ICE java ICE ICE入门 ice基础教程 ice开发文档

    文档还专门列出了slice2cpp和slice2java命令行选项,分别用于C++和Java语言的slice映射。 在核心概念的后续章节中,文档介绍了ICE模块的具体使用方法,包括名字与作用域的定义、元数据使用等。同时,通过slice...

    计算h264码流slice的数目及大小

    2. Slice的概念 在H.264编码中,slice是编码的基本单元,通常包含一组连续的宏块。Slice的主要作用是允许错误恢复,因为如果网络传输中某个slice丢失,只需要重传该slice,而不会影响整个帧的数据。Slice还可以用于...

    center_slice-masterx.zip

    在本文中,我们将深入探讨Flutter框架中的`center_slice`概念,并通过给定的`center_slice-master.zip`压缩包文件中的示例进行详细解释。`center_slice`是一种在UI设计中常用于图片或背景图像处理的技术,它允许图像...

    Array.prototype 的泛型应用分析

    强制转换为数组是泛型应用的另一个常见场景,通常使用 `slice` 方法实现: ```javascript var args = Array.prototype.slice.call(arguments); ``` 这行代码将 `arguments` 对象转换为真正的数组,以便可以使用...

    Go-轻松在golang中处理slice的库

    2. **删除元素**:除了标准库中的`append`和`copy`函数,库可能提供了删除指定索引元素的功能,同时保持slice的连续性。 3. **查找元素**:快速查找slice中的特定元素,返回其索引或一个标识是否找到的布尔值。 4....

    获取H.264的slice type

    2. P Slice(Predicted Slice):基于前向预测的宏块,从先前的帧中获取参考信息进行预测,减少了数据传输量。 3. B Slice(Bi-directional Predicted Slice):使用双向预测的宏块,既参考前面的帧也参考后面的帧...

    Cut&Slice me

    "Cut&Slice me"是一款专为Photoshop设计的切图神器,它被广泛应用于Web前端开发,帮助设计师高效地将图像切割成多个可独立使用的部分,以便在网页中精确显示。这款插件大大提升了切图的效率,尤其对于处理复杂的布局...

    基于Slice的H.264并行视频编码算法

    ### 基于Slice的H.264并行视频编码算法 #### 一、引言 随着视频编码技术的发展,H.264作为一种新兴的视频标准,因其高效的视频压缩率和先进的编码技术而备受关注。然而,这也带来了更高的计算复杂度,使得视频编码...

    slice sampler_抽样方法_r语言slice_SLICESAMPLER_mcmc_slice_

    切片采样(Slice Sampling)是一种在统计学和机器学习领域广泛应用的马尔科夫链蒙特卡洛(Markov Chain Monte Carlo, MCMC)方法。它通过构造一个包含目标分布的简单辅助函数(切片)来实现对复杂概率分布的采样。...

    java script 在html中的小应用

    涉及`substring`或`slice`方法来截取字符串,以及DOM操作更新文本内容。 7. **“闪动”标题栏** (8 建“闪动”标题栏.html): 标题栏的闪动效果是通过定时器改变文本颜色或字体大小来实现的。使用`setInterval`和`...

    ice-builder-gradle:Gradle插件可自动将Slice文件编译为Java

    《ice-builder-gradle:Gradle插件自动化Slice到Java的编译流程》 在IT行业中,构建工具的效率和灵活性对于开发团队来说至关重要。Gradle作为一款强大的、灵活的构建自动化工具,广泛应用于Java和其他语言的项目。...

    JAVA教材管理系统

    1. **JAVA编程基础**:系统的基础架构建立在JAVA语言之上,因此,对JAVA语法、面向对象编程、异常处理、IO流、集合框架(如ArrayList、HashMap)等基础知识的掌握是必不可少的。此外,理解和运用JAVA的多线程技术,...

    h264-sps-slice-nalunit解析VS2017.rar

    《H264编码解析:SPS、Slice与NAL单元详解》 在现代视频编码技术中,H264(也称为AVC)是广泛应用于高清视频传输、网络流媒体和存储的重要标准。H264编码高效且灵活,但其内部结构复杂,涉及到众多的专业术语和技术...

Global site tag (gtag.js) - Google Analytics