第5章 アダプタクラスリファレンス
5.8 名前の番号付け
5.8.4 実行単位全体で一意にする名前
メソッド名には、Javaのメソッド名をそのまま使います。しかし、Javaでは同名でかつパラメタ の異なるメソッドを複数定義できるので、COBOLのメソッド名に番号をつけて区別します。
ただし、オブジェクト指向の特徴である多態性(多様性)を生かすために、同名かつ同じパラメ タを持つメソッドには、常に同じ名前をつけます。この対応関係は、Jアダプタクラスジェネレ ータを使うCOBOLプログラムの実行単位内で、一貫していなければなりません。たとえば、
java.io.ObjectInputStream ク ラ ス は 、 java.io.ObjectInput イ ン タ フ ェ ー ス と java.io.InputStreamクラスを継承しています(下図参照)。
java.io.ObjectInputインタフェース、java.io.InputStreamクラスおよび java.io.ObjectInputStreamクラスの関係
これらに対応するアダプタクラスは、同じパラメタを持つreadメソッドに対して、同じ名前のメ ソッドを生成する必要があります。
Jアダプタクラスジェネレータは、クラス/インタフェースをまたがってメソッド名の対応関係 を管理するために、“4.3.2 生成名管理ファイル”を使用します。そして、同名のメソッドに対 し、以下の規則で番号をつけます。
5.8 名前の番号付け
67 1. 生成名管理ファイルに同名・同パラメタのメソッドが登録されていないか探します。
2. 見つかった場合、対応するCOBOLメソッド名を使います。
3. 見つからなかった場合、新しいCOBOLメソッド名を生成し、生成名管理ファイルに登録し ます。
4. COBOLメソッド名は、以下の規則で生成します。
― 最初に登録するCOBOL名は、Javaのメソッド名と同じ
― 2番目以降は、01から順に昇順に番号をつける
例
java.io.ObjectInput イ ン タ フ ェ ー ス 、 java.io.InputStream ク ラ ス お よ び java.io.ObjectInputStreamクラスのreadメソッドに対応するオブジェクトメソッドは、以下の 名前になります。
Javaのメソッド COBOLのメソッド
read() read
read(byte[]) read-01
java.io.ObjectInput インタフェース
read(byte[], int, int)
java-io-ObjectInput クラス
read-02
read() read
read(byte[]) read-01
java.io.InputStream クラス
read(byte[], int, int)
Java-io-InputStream クラス
read-02
read() read
java.io.ObjectInputS tream
クラス
read(byte[], int, int)
Java-io-ObjectInputStream
クラス read-02
注意事項
アダプタクラスを生成する順番により、番号のつけ方が変わることがあります。同じ環境で使う アダプタクラスの生成には、同じ生成名管理ファイルを使用してください。
補足
● これらの規則は、クラスメソッドにも適用します。(“5.5.5 クラスメソッド”参照)
● Javaのフィールド(変数)(クラス/インスタンス)は、COBOLのプロパティメソッドに対 応付けます。プロパティメソッドの場合も、メソッドと同じ規則を適用します。(“5.5.4 ク ラス変数”、“5.5.6 インスタンス変数”参照)
● アダプタクラス生成時に使用するJDKおよびJ2SDKのバージョンにより、番号のつけ方が変 わることがあります。
第5章 アダプタクラスリファレンス
68
付録A メッセージ一覧
この章では、Jアダプタクラスジェネレータが出力するメッセージの内容および対処方法につい て説明します。