storeNew()
javaLib.storeNew() システム関数は、クラスのコンストラクターを呼び出し、 新しいオブジェクトを EGL Java™ オブジェクト・スペースに格納します。
ID が既にオブジェクト・スペース内に存在している場合は、次のステップと同等のアクションが実行されます。
- javaLib.remove() を実行し、以前その識別子に関連付けられていたオブジェクトを除去します。
- 新しいオブジェクトを識別子に関連付けます。
javaLib.storeNew() および類似する関数が実行される、EGL Java オブジェクト・スペースについて詳しくは、『Java アクセス関数』を参照してください。 EGL は、この Java アクセスのメソッドを以前のバージョンとの互換性のために保守します。新規コードの場合は、より強力な ExternalType 構文を使用してください。詳しくは、『ExternalType パーツ』を参照してください。
構文
javaLib.storeNew(
storeId javaObjId in,
class STRING in
{, argument anyEglPrimitive in})
- storeId
- 新規オブジェクトを識別する名前 (大/小文字を区別)。STRING 型と代入互換性のある任意の変数または式を入力することができます。また、入力データは、後述の例で示すとおり、objID にキャストされます。EGL は、引数値の先頭と最後から、1 バイトのブランクと 2 バイトのブランクを削除します。
- class
- Java クラスの完全修飾名 (大/小文字を区別)。STRING 型との代入互換性のある任意の変数または式を入力できます。 EGL は、引数値の先頭と最後から、1 バイトのブランクと 2 バイトのブランクを削除します。
- argument
- コンストラクターに渡される値。キャストが必要になる場合があります。『EGL プリミティブ型の Java へのマッピング』を参照してください。Java の型変換の規則が適用されます。
例えば、int として宣言されたコンストラクター・パラメーターに SMALLINT を渡しても、エラーは発生しません。精度が失われるのを避けるために、
Java の double には EGL の FLOAT を使用し、
Java の float には EGL の SMALLFLOAT を使用してください。
それ以外の EGL の型を使用すると、丸め誤差が生じる場合があります。
以下に示すように、EGL 外部型の値は有効です。
SharedResourcePowerServer srps = JavaLib.getSharedResourcePowerServer(); JavaLib.storeNew("storeId" as "objID:java", "myClass", srps);
例
以下の例では、関数は、新しく作成したオブジェクトをオブジェクト・スペースに置きます。
javaLib.storeNew("storeId" as "objID:java", "myClass", 36 );
エラーに関する考慮事項
v60ExceptionCompatibility プログラム・プロパティーが設定されていないか、NO に設定されている場合、例外によって、JavaObjectException が発生します。 その他のエラーでは、RuntimeException が発生します。
v60ExceptionCompatibility プログラム・プロパティーが YES に設定されている場合、javaLib.storeNew() の処理中にエラーが発生すると、sysVar.errorCode は次の表の値に設定されます。
| sysVar.errorCode の値 | 説明 |
|---|---|
| 00001000 | 呼び出されたメソッドによって、またはクラスの初期化の結果として、例外がスローされました。 |
| 00001001 | オブジェクトが NULL でした。または指定された ID がオブジェクト・スペース内にありませんでした。 |
| 00001002 | 指定された名前の public メソッド、フィールド、またはクラスが存在しないか、ロードできません。 |
| 00001003 | EGL プリミティブ型が、Java で想定される型と一致しません。 |
| 00001006 | NULL へキャストする引数のクラスをロードできませんでした。 |
| 00001007 | メソッドまたはフィールドに関する情報の取得中に、SecurityException または IllegalAccessException がスローされました。または、final 宣言されたフィールドの値を設定しようとしました。 |
| 00001008 | コンストラクターを呼び出すことができません。クラス名はインターフェースまたは抽象クラスを参照しています。 |