如何为 Java 包装器名取别名

EGL 生成器应用下列规则来为 Java™ 包装器名称取别名:

  1. 如果 EGL 名称是全大写的,则将它转换为小写。
  2. 如果名称是类名或方法名,则使第一个字符为大写。(例如,x 的 getter 方法是 getX() 而不是 getx()。)
  3. 删除每个下划线(_)和连字符(-)。(如果使用 VisualAge® Generator 兼容性方式,则连字符在 EGL 名称中有效。)如果一个字母跟随着下划线或连字符,则将该字符更改为大写字符。
  4. 如果名称是使用句点(.)作为分隔符的限定名,则将每个句点替换为下划线,并在该名称开头添加下划线。
  5. 如果名称中包含美元符号($),则将美元符号替换为两个下划线,并在该名称开头添加下划线。
  6. 如果名称是 Java 关键字,则在该名称开头添加下划线。
  7. 如果名称是 *(一个星号,它表示填充符项),则将第一个星号重命名为 Filler1,将第二个星号重命名为 Filler2,依此类推。

另外,特殊规则适用于程序包装器、记录包装器和具有子结构的数组项的 Java 包装器类名。余下各节讨论这些规则并给出一个示例。一般情况下,如果生成的包装器类中的字段中存在命名冲突,则使用限定名来确定类和变量名。如果仍然没有解决冲突,则会在生成时抛出异常。

程序包装器类

记录参数包装器是使用以上适用于类型定义名的规则来命名的。如果记录包装器类名与程序类名或程序包装器类名冲突,则会将 Record 添加至记录包装器类名的末尾。

用于变量名的规则如下所示:
  1. 记录参数变量是使用以上适用于参数名的规则命名的。因此,get()set() 方法包含这些名称而不是类名。
  2. 按照以上提供的规则,getset 方法被命名为 getset 后跟参数名。

记录包装器类

用于具有子结构的数组项类名的规则如下:
  1. 具有子结构的数组项成为记录包装器类的内部类,类名是通过将以上规则应用于项名来派生的。如果此类名与包含的记录类名冲突,则会将 Structure 追加至项类名。
  2. 如果任何项类名互相冲突,则会使用限定项名。
用于 getset 方法名的规则如下所示:
  1. 按照以上提供的规则,这些方法被命名为 getset 后跟项名。
  2. 如果任何项名互相冲突,则会使用限定项名。

具有子结构的数组项类

用于具有子结构的数组项类名的规则如下:
  1. 具有子结构的数组项成为为包含具有子结构的数组项而生成的包装器类的内部类,类名是通过将以上规则应用于项名来派生的。
  2. 如果此类名与包含的具有子结构的数组项类名冲突,则会将 Structure 追加至项类名。
用于 getset 方法名的规则如下所示:
  1. 按照以上提供的规则,这些方法被命名为 getset 后跟项名。
  2. 如果任何项名互相冲突,则会使用限定项名。

示例

以下样本程序和生成的输出显示在包装器生成期间的期望结果:

样本程序

Program WrapperAlias(param1 RecordA)
  
end

Record RecordA type basicRecord
	10 itemA CHAR(10)[1];
	10 item_b CHAR(10)[1];
	10 item$C CHAR(10)[1];
	10 static CHAR(10)[1];
	10 itemC CHAR(20)[1];
		15 item CHAR(10)[1];
		15 itemD CHAR(10)[1];
	10 arrayItem CHAR(20)[5];
		15 innerItem1 CHAR(10)[1];
		15 innerItem2 CHAR(10)[1];
end

生成的输出

生成的输出的名称
输出 名称
程序包装器类 WrapperaliasWrapper,包含字段 param1,它是记录包装器类 RecordA 的实例
参数包装器类 RecordA,可通过下列方法来访问:
  • getItemA(来自 itemA
  • getItemB(来自第一个 item-b
  • get_Item__C(来自 item$C
  • get_Static(来自 static
  • get_ItemC_itemB(来自 itemC 中的 itemB
  • getItemD(来自 itemD
  • getArrayItem(来自 arrayItem
ArrayItemRecordA 的内部类,它包含可通过 getInnerItem1getInnerItem2 访问的字段。

相关任务
生成 Java 包装器

使用条款 | 反馈
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.