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 は次の表の値に設定されます。

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

フィードバック