setField()

システム関数 JavaLib.setField は、ネイティブ Java™ オブジェクトまたはクラス内のフィールドに値を設定します。JavaLib.setField は、Java アクセス関数の 1 つです。

  JavaLib.setField(
    identifierOrClass javaObjId in,
    field STRING in,
    value anyEglPrimitive in)
identifierOrClass
この引数は、次のエンティティーのいずれかです。
  • オブジェクト・スペース内のオブジェクトを参照する ID
  • Java クラスの完全修飾名

この引数は、文字列リテラル、または CHAR 型、DBCHAR 型、MBCHAR 型、STRING 型、または UNICODE 型の変数のいずれかです。オブジェクトの ID を指定する場合は、後述の例のように、その ID を objID にキャストする必要があります。EGL は、大/小文字の区別がある引数値の先頭と最後から、1 バイトのブランクと 2 バイトのブランクを削除します。

field
変更するフィールドの名前。

この引数は、文字列リテラル、または CHAR 型、DBCHAR 型、MBCHAR 型、STRING 型、または UNICODE 型の変数のいずれかです。大/小文字の区別があるストリングの先頭と最後から、1 バイトのブランクと 2 バイトのブランクが削除されます。

value
値そのもの。

『Java アクセス (システム・ワード)』に記述したキャストが必要な場合があります。

Java の型変換の規則が適用されます。例えば、int として宣言されたフィールドに short を割り当てても、エラーは発生しません。

以下に例を示します。
  JavaLib.setField( (objID)"myId", "myField", 
    (short)myNumItem );

JavaLib.setField の処理中にエラーが発生すると、SysVar.errorCode は、以下の表にリストされている値に設定されます。

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

関連する概念

EGL ステートメントおよびコマンドの構文図

関連する参照項目
EGL ライブラリー JavaLib

getField()
invoke()
isNull()
isObjID()
qualifiedTypeName()
remove()
removeAll()
store()
storeCopy()
storeField()
storeNew()

ご利用条件 | フィードバック
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.
(C) Copyright IBM Japan 2005.