store()

javaLib.store() システム関数は、メソッドを呼び出し、戻りオブジェクト (または NULL 値) を EGL Java™ オブジェクト・スペースに格納し、指定した識別子にオブジェクトを関連付けます。

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

このメソッドがオブジェクトの代わりに Java プリミティブを返す場合、EGL はプリミティブを表すオブジェクトを保管します。 例えば、メソッドで int が戻された場合、EGL は、java.lang.Integer 型のオブジェクトを保存します。

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

構文

  javaLib.store(
    storeId javaObjId in,
    identifierOrClass javaObjId in,
    method STRING in
    {, argument anyEGLPrimitive in} )
storeId
戻りオブジェクトを識別するための名前 (大/小文字を区別)。STRING 型と代入互換性のある変数または式を入力することができます。また、入力データは、objID にキャストされます。EGL は、引数値の先頭と最後から、1 バイトのブランクと 2 バイトのブランクを削除します。
identifierOrClass
呼び出す method を持つクラスまたはオブジェクト。これは、次のいずれかのエンティティーです。
  • Java objID (ローカル Java オブジェクトのメソッドを呼び出す場合)。
  • クラス名を表すストリング (Java クラスのメソッドを呼び出す場合)。 EGL は、大/小文字の区別がある引数値の先頭と最後から、1 バイトのブランクと 2 バイトのブランクを削除します。
method
呼び出すメソッドの名前 (大/小文字を区別し、小括弧は含みません)。 STRING 型との代入互換性のある任意の変数または式を入力できます。 EGL は、引数値の先頭と最後から、1 バイトのブランクと 2 バイトのブランクを削除します。
argument
メソッドに渡される値。キャストが必要になる場合があります。『EGL プリミティブ型の Java へのマッピング』を参照してください。Java の型変換の規則が適用されます。 例えば、int として宣言されたメソッド・パラメーターに SMALLINT を渡しても、エラーは発生しません。精度が失われるのを避けるために、 Java の double には EGL の FLOAT を使用し、 Java の float には EGL の SMALLFLOAT を使用してください。 その他のいずれかの EGL の型を使用すると、丸め誤差が生じることがあります。
以下に示すように、EGL 外部型の値は有効です。
SharedResourcePowerServer srps = JavaLib.getSharedResourcePowerServer();
JavaLib.store("storeId" as "objID:java", "myId" as "objID:java",
              "myMethod", srps);

以下の例では、myMethod を呼び出し、結果を storeID に関連付けます。

  javaLib.store("storeId" as "objID:java", "myId" as "objID:java",
      "myMethod", myVar as "java:smallfloat");

エラーに関する考慮事項

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

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

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

フィードバック