setField()

javaLib.setField() システム関数は、ローカル Java™ オブジェクトまたはクラス内のフィールドの値を設定します。これを行うために、EGL は、 そのフィールドのローカル Java 「set」メソッドを呼び出します。

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

構文

  javaLib.setField(
    identifierOrClass javaObjId in,
    field STRING in,
    value JavaType in)
identifierOrClass
この引数は、次のエンティティーのいずれかです (大/小文字を区別を区別します)。
  • Java objID (ローカル Java オブジェクトのフィールド値を設定する場合)。
  • クラス名を表すストリング (Java クラスのフィールド値を設定する場合)。

STRING 型との代入互換性のある任意の変数または式を入力できます。 オブジェクトの ID を指定する場合は、後述の例のように、その ID を objID にキャストする必要があります。EGL は、引数値の先頭と最後から、1 バイトのブランクと 2 バイトのブランクを削除します。

field
変更するフィールドの名前 (大/小文字を区別)。STRING 型との代入互換性のある任意の変数または式を入力できます。 ストリングの先頭と最後から、1 バイトのブランクと 2 バイトのブランクが削除されます。
value
値そのもの。キャストが必要になる場合があります。『EGL プリミティブ型の Java へのマッピング』を参照してください。Java の型変換の規則が適用されます。 例えば、int として宣言されたフィールドに short を割り当てても、エラーは発生しません。
以下に示すように、EGL 外部型の値は有効です。
SharedResourcePowerServer srps = JavaLib.getSharedResourcePowerServer();
JavaLib.setField("myId" as "objID:java", "myField", srps);

以下の例では、myId によって識別されたオブジェクト内のフィールド myFieldmyNumField の値に設定します。

  javaLib.setField("myId" as "objID:java", "myField", 
    myNumField as "java:short");

エラーに関する考慮事項

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

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

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