storeField()

javaLib.storeField() システム関数は、 クラス・フィールドまたはオブジェクト・フィールドの値を EGL Java™ オブジェクト・スペースに格納します。

オブジェクトを識別する名前が既にオブジェクト・スペース内に存在している場合は、次のステップと同等のアクションが実行されます。

クラスまたはオブジェクト・フィールドに、オブジェクトではなく Java プリミティブが含まれている場合、EGL は、プリミティブを表すオブジェクトを保存します。例えば、フィールドに int が含まれている場合、EGL は、java.lang.Integer 型のオブジェクトを保存します。

javaLib.storeField() や他の類似の関数が実行される EGL Java オブジェクト・スペースについて詳しくは、『Java アクセス関数』を参照してください。 EGL は、この Java アクセスのメソッドを以前のバージョンとの互換性のために保守します。新規コードの場合は、より強力な ExternalType 構文を使用してください (『ExternalType パーツ』を参照してください)。

構文

  javaLib.storeField(
    storeId javaObjId in,
    identifierOrClass javaObjIdOrClass in,
    field STRING in)
storeId
オブジェクトを識別する名前 (大/小文字を区別)。STRING 型と代入互換性のある任意の変数または式を入力することができます。また、入力データは、後述の例で示すとおり、objID にキャストされます。EGL は、引数値の先頭と最後から、1 バイトのブランクと 2 バイトのブランクを削除します。
identifierOrClass
この引数は、次のエンティティーのいずれかです。
  • Java objID (Java オブジェクトのフィールドにアクセスする場合)。
  • Java クラスの名前を表すストリング (Java クラスのフィールドにアクセスする場合)。 EGL は、大/小文字の区別がある引数値の先頭と最後から、1 バイトのブランクと 2 バイトのブランクを削除します。
field
指定されたオブジェクトまたはクラス内のフィールドの名前 (大/小文字を区別)。 STRING 型との代入互換性のある任意の変数または式を入力できます。 ストリングの先頭と最後から、1 バイトのブランクと 2 バイトのブランクが削除されます。

この例では、javaLib.storeField() システム関数は、myField の値をオブジェクト・スペースに格納します。

  javaLib.storeField("myStoreId" as "objID:java",
      "myId" as "objID:java", "myField");

エラーに関する考慮事項

v60ExceptionCompatibility プログラム・プロパティーが設定されていないか、NO に設定されている場合、例外によって、JavaObjectException が発生します。 その他のエラーでは、RuntimeException が発生します。

v60ExceptionCompatibility プログラム・プロパティーが YES に設定されている場合、javaLib.storeField() の処理中にエラーが発生すると、sysVar.errorCode は次の表の値に設定されます。

表 1. javaLib.storeField() エラー・コード
sysVar.errorCode の値 説明
00001000 呼び出されたメソッドによって、 またはクラスの初期化の結果として、例外がスローされました。
00001001 オブジェクトが NULL でした。または指定された ID がオブジェクト・スペース内にありませんでした。
00001002 指定された名前の public メソッド、フィールド、またはクラスが存在しないか、ロードできません。
00001007 メソッドまたはフィールドに関する情報の取得中に、 SecurityException または IllegalAccessException がスローされました。 または、final 宣言されたフィールドの値を設定しようとしました。
00001009 クラス名ではなく、ID を指定する必要があります。 メソッドまたはフィールドが静的ではありません。

フィードバック