getField()
javaLib.getField() システム関数は、EGL Java™ オブジェクト・スペース内の指定された Java オブジェクトまたはクラスの、指定されたフィールドの値を戻します。
javaLib.getField() や他の類似の関数が実行される EGL Java オブジェクト・スペースについて詳しくは、『Java アクセス関数』を参照してください。 EGL は、この Java アクセスのメソッドを以前のバージョンとの互換性のために保守します。新規コードの場合は、より強力な ExternalType 構文を使用してください。詳しくは、『ExternalType パーツ』を参照してください。
構文
javaLib.getField(
identifierOrClass javeObjIdOrClass in,
field STRING in)
returns (result anyJavaPrimitive)
- identifierOrClass
- 以下のエンティティーはこの引数として機能することができます。
- Java objID (オブジェクト・フィールドの値を取得する場合)。
- クラス名を表す大/小文字の区別のあるストリング (クラス・フィールドの値を取得する場合)。ストリングの先頭と最後から、1 バイトのブランクと 2 バイトのブランクが削除されます。
- field
- 読み取るフィールドの名前 (大/小文字を区別)。STRING 型との代入互換性のある任意の変数または式を入力できます。 ストリングの先頭と最後から、1 バイトのブランクと 2 バイトのブランクが削除されます。
- result
- 結果は、2 番目の引数で指定されたフィールドの値です。
次のことが該当します。
- 受け取る値が BigDecimal、BigInteger、byte、short、int、long、float、または double の場合、 結果の変数は数値データ型でなければなりません。 特性は値と同じである必要はありません。 例えば、float は、小数桁数なしで宣言された戻り変数に格納できます。オーバーフローの処理の詳細については、『sysVar』のトピック『overflowIndicator』を参照してください。
- 受け取る値が Boolean の場合、結果の変数は、BOOLEAN 型または数値プリミティブ型でなければなりません。 数値変数の場合、値は、true の場合は 1、false の場合は 0 です。
- 受け取る値がバイト配列の場合、結果の変数は、HEX 型でなければなりません。 長さが一致しない場合については、『代入』を参照してください。
- 受け取る値が String または char の場合、結果フィールドは、CHAR 型、DBCHAR 型、MBCHAR 型、STRING 型、または UNICODE 型でなければなりません。
- 結果フィールドが MBCHAR 型、STRING 型、または UNICODE 型である場合、受け取る値は常に適切な値になります。
- 結果フィールドが CHAR 型の場合、受け取る値に DBCHAR 文字に相当する文字が含まれていると、問題が発生することがあります。
- 結果フィールドが DBCHAR 型の場合、受け取る値に 1 バイト文字に相当するユニコード文字が含まれていると、問題が発生することがあります。
長さの不一致について詳しくは、『代入』を参照してください。
例
以下の例は、myID を objID としてキャストした getField() 関数を示しています。
myVar = javaLib.getField("myID" as "objID:java", "myField");
エラーに関する考慮事項
v60ExceptionCompatibility プログラム・プロパティーが設定されていないか、NO に設定されている場合、例外が発生すると、EGL は JavaObjectException をスローします。 その他のエラーが発生した場合は、EGL によって RuntimeException がスローされます。
v60ExceptionCompatibility プログラム・プロパティーが YES に設定されている場合、javaLib.getField() の処理中にエラーが発生すると、sysVar.errorCode は次の表の値に設定されます。
| sysVar.errorCode の値 | 説明 |
|---|---|
| 00001000 | 呼び出されたメソッドによって、 またはクラスの初期化の結果として、例外がスローされました。 |
| 00001001 | オブジェクトの値が NULL でした。 または指定された識別子がオブジェクト・スペース内にありませんでした。 |
| 00001002 | 指定された名前の public メソッド、フィールド、またはクラスが存在しないか、ロードできません。 |
| 00001004 | メソッドが NULL 値を戻したか、メソッドが値を戻さないか、 またはフィールドの値が NULL でした。 |
| 00001005 | 戻り値が代入した変数の型に一致しません。 |
| 00001007 | メソッドまたはフィールドに関する情報の取得中に、 SecurityException または IllegalAccessException がスローされました。 または、final 宣言されたフィールドの値を設定しようとしました。 |
| 00001009 | クラス名ではなく、ID を指定する必要があります。 メソッドまたはフィールドが静的ではありません。 |