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 によって識別されたオブジェクト内のフィールド 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 を指定する必要があります。メソッドまたはフィールドが静的ではありません。 |