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)
STRING 型との代入互換性のある任意の変数または式を入力できます。 オブジェクトの ID を指定する場合は、後述の例のように、その ID を objID にキャストする必要があります。EGL は、引数値の先頭と最後から、1 バイトのブランクと 2 バイトのブランクを削除します。
SharedResourcePowerServer srps = JavaLib.getSharedResourcePowerServer();
JavaLib.setField("myId" as "objID:java", "myField", srps);
以下の例では、myId によって識別されたオブジェクト内のフィールド myField を myNumField の値に設定します。
javaLib.setField("myId" as "objID:java", "myField",
myNumField as "java:short");
v60ExceptionCompatibility プログラム・プロパティーが設定されていないか、NO に設定されている場合、例外が発生すると、EGL は JavaObjectException をスローします。 その他のエラーが発生した場合は、EGL によって RuntimeException がスローされます。
v60ExceptionCompatibility プログラム・プロパティーが YES に設定されている場合、javaLib.setField() の処理中にエラーが発生すると、sysVar.errorCode は次の表の値に設定されます。
| sysVar.errorCode の値 | 説明 |
|---|---|
| 00001000 | 呼び出されたメソッドによって、またはクラスの初期化の結果として、例外がスローされました。 |
| 00001001 | オブジェクトが NULL でした。または指定された ID がオブジェクト・スペース内にありませんでした。 |
| 00001002 | 指定された名前の public メソッド、フィールド、またはクラスが存在しないか、ロードできません。 |
| 00001003 | EGL プリミティブ型が、Java で想定される型と一致しません。 |
| 00001007 | メソッドまたはフィールドに関する情報の取得中に、SecurityException または IllegalAccessException がスローされました。または、final 宣言されたフィールドの値を設定しようとしました。 |
| 00001009 | クラス名ではなく、ID を指定する必要があります。メソッドまたはフィールドが静的ではありません。 |