Java ラッパー別名の割り当て方法
EGL 生成プログラムは、以下の規則を適用して Java™ ラッパーに別名を割り当てます。
- EGL 名がすべて大文字の場合は、それを小文字に変換します。
- 名前がクラス名またはメソッド名の場合は、最初の文字を大文字にします。(例えば、x に対する getter メソッドは、getx() ではなく、getX() です。)
- 下線 (_) およびハイフン (-) をすべて削除します。(VisualAge® Generator 互換モードを使用している場合は、EGL 名内のハイフンは有効です。)下線またはハイフンの後に文字が続く場合は、その文字を大文字に変更します。
- 名前が、区切り文字としてピリオド (.) を使用する修飾名の場合は、すべてのピリオドを下線で置き換え、名前の先頭に下線を追加します。
- 名前にドル記号 ($) が含まれている場合は、そのドル記号を 2 つの下線で置き換え、名前の先頭に下線を追加します。
- 名前が Java キーワードの場合は、名前の先頭に下線を追加します。
- 名前が * (充てんフィールドを表すアスタリスク) の場合は、最初のアスタリスクを Filler1 に変更し、2 番目のアスタリスクを Filler2 に変更します。以降も同様にします。
さらに、プログラム・ラッパー、レコード・ラッパー、および副構造化されている配列フィールドの Java ラッパー・クラス名には、特別な規則が適用されます。残りのセクションでは、これらの規則について説明し、例を示します。一般に、生成されたラッパー・クラス内のフィールド間で名前が競合している場合は、クラス名と変数名を判別するために修飾名が使用されます。それでも競合が解決しない場合は、生成時に例外がスローされます。
プログラムのラッパー・クラス
レコードのパラメーター・ラッパーは、型定義名に適用される上記の規則を使用して命名されます。レコードのラッパー・クラス名がプログラムのクラス名またはプログラムのラッパー・クラス名と競合している場合は、そのレコードのラッパー・クラス名の終わりに Record が追加されます。
変数名に対する規則は以下のとおりです。
- レコード・パラメーター変数は、パラメーター名に適用される上記の規則を使用して命名されます。したがって、get() メソッドおよび set() メソッドには、クラス名ではなくこれらの名前が含まれます。
- get メソッドおよび set メソッドは、get または set の後に、上記の規則が適用されたパラメーター名を続けることにより命名されます。
レコードのラッパー・クラス
副構造化された配列フィールドのクラス名に対する規則は以下のとおりです。
- 副構造化された配列フィールドは、レコードのラッパー・クラスの内部クラスになり、そのクラス名は、フィールド名に上記の規則を適用して得られます。このクラス名が、それを包含しているレコード・クラス名と競合している場合、Structure がフィールドのクラス名に付加されます。
- いずれかのフィールド・クラス名が互いに競合している場合は、修飾されたフィールド名が使用されます。
get メソッドおよび set メソッドの名前に対する規則は以下のとおりです。
- メソッドは、get または set の後に、上記の規則が適用されたフィールド名を付けて命名されます。
- いずれかのフィールド名が互いに競合している場合は、修飾されたフィールド名が使用されます。
副構造化された配列フィールド・クラス
副構造化された配列フィールドのクラス名に対する規則は以下のとおりです。
- 副構造化された配列フィールドは、それを包含している副構造化された配列フィールドに対して生成されたラッパー・クラスの内部クラスになり、そのクラス名は、上記の規則をフィールド名に適用することにより得られます。
- このクラス名が、それを包含している副構造化された配列フィールドのクラス名と競合している場合は、Structure がフィールドのクラス名に付加されます。
get メソッドおよび set メソッドの名前に対する規則は以下のとおりです。
- メソッドは、get または set の後に、上記の規則が適用されたフィールド名を付けて命名されます。
- いずれかのフィールド名が互いに競合している場合は、修飾されたフィールド名が使用されます。
例
以下のサンプル・プログラム、および生成された出力は、ラッパー生成時に何が予測されていたかを示しています。
サンプル・プログラム
Program WrapperAlias(param1 RecordA)
end
Record RecordA type basicRecord
10 fieldA CHAR(10)[1];
10 field_b CHAR(10)[1];
10 field$C CHAR(10)[1];
10 static CHAR(10)[1];
10 fieldC CHAR(20)[1];
15 field CHAR(10)[1];
15 fieldD CHAR(10)[1];
10 arrayField CHAR(20)[5];
15 innerField1 CHAR(10)[1];
15 innerField2 CHAR(10)[1];
end
生成される出力
| Output | 名前 |
|---|---|
| プログラムのラッパー・クラス | WrapperaliasWrapper。フィールド param1 を含む、レコードのラッパー・クラス RecordA のインスタンス。 |
| パラメーターのラッパー・クラス | RecordA。以下のメソッドからアクセスできます
|