Java オブジェクトのインスタンス化

制約事項: 次の説明はネイティブ コードのみに該当します。

Java の各クラスには、オブジェクトをインスタンス化するためのコンストラクター メソッドが 1 つ以上含まれています。Java では、コンストラクター メソッドはクラスと同じ名前を持ちます。これらのコンストラクター メソッドは、COBOL プロキシ オブジェクトで new というメソッド名にマップされ、COBOL 側から呼び出し可能になります。

同じ Java クラスでもコンストラクターが異なれば、インスタンスを初期化するために必要なパラメーターの数や組み合わせが異なります。たとえば、Java の Rectangle クラスは、次に示す 2 通りの方法を含む、いくつかの異なる方法でインスタンス化できます。

 Rectangle r1 = new Rectangle ()
              //  rectangle (x,y) = 0,0, width=0, height=0
 Rectangle r2 = new Rectangle(4, 5, 10, 20)
             // rectangle (x,y) = (4,5), width=10, height=20

これに相当する COBOL のコードは次のようになります。

 working-storage section.
 01 r1                  object reference.
 01 r2                  object reference.
 ...

 procedure division.
 ...
     invoke jRectangle "new" returning r1
          *> rectangle (x,y) = 0,0, width=0, height=0
     invoke jRectangle "new" using 4, 5, 10, 20
                         returning r2
          *> rectangle (x,y) = (4,5), width=10, height=20

COBOL ランタイム システムは、パラメーターの数と型を基に、Java クラス内の適切なコンストラクターを呼び出します。Java は型チェックが厳密であるため、指定するパラメーターの型は、Java クラスの定義に必ず一致させてください。COBOL データ形式と Java データ型のマッピングの詳細は、「Java データ型」の章を参照してください。コピーブック javatypes.cpy には、Java のデータ型に直接的に対応する一連のデータ型が定義されており、Java と COBOL 間でデータをやり取りするときには、これらのデータ型を COBOL 側で使用することを推奨します。