storeNew()

系统函数 JavaLib.storeNew 调用类的构造函数并将新对象放到 EGL Java™ 对象空间中。如果该标识已存在于对象空间中,则此操作等同于下列步骤:

JavaLib.storeNew 是若干 Java 访问函数的其中一个。

  JavaLib.storeNew(
    storeId javaObjId in,
    class STRING in
    {, argument anyEglPrimitive in})
storeId
要与新对象一起存储的标识。

此自变量是字符串文字或类型为 CHAR、DBCHAR、MBCHAR 或 UNICODE 的项。必须将该标识强制类型转换为 objID,如稍后的示例所示。EGL 将从自变量值的开头和末尾除去单字节和双字节空格,其中,自变量值是区分大小写的。

class

Java 类的标准名称。

此自变量是字符串文字或类型为 CHAR、DBCHAR、MBCHAR 或 UNICODE 的项。EGL 将从自变量值的开头和末尾除去单字节和双字节空格,其中,自变量值是区分大小写的。

argument
传递给构造函数的值。

可能需要进行强制类型转换,这在 Java 访问(系统字)中有所指定。

Java 类型转换规则生效。例如,即使将 short 传递给声明为 int 的构造函数参数,也不会发生错误。

为避免精度降低,使用 EGL 浮点项来表示 Java 双精度,并使用 EGL smallfloat 项来表示 Java 浮点。使用其它 EGL 类型中的某个类型可能导致值被四舍五入。

无论构造函数执行什么操作,调用程序中的内存区都不会更改。

下面是一个示例:
  JavaLib.storeNew( (objId)"storeId", "myClass", 36 );

在处理 JavaLib.storeNew 期间发生的错误会将 sysVar.errorCode 设置为下表中列示的值。

sysVar.errorCode 中的值 描述
00001000 被调用方法抛出了异常,或者作为类初始化的结果而抛出了异常
00001001 对象为 null,或者指定的标识不在对象空间中
00001002 具有指定名称的公用方法、字段或类不存在或无法被装入
00001003 EGL 基本类型与 Java 中期望的类型不匹配
00001006 未能装入强制类型转换为 null 的自变量的类
00001007 在尝试获取关于方法或字段的信息时抛出了 SecurityException 或 IllegalAccessException;或者尝试设置已被声明为最终字段的字段的值
00001008 不能调用构造函数;类名引用接口或抽象类

相关概念
EGL 函数的语法图

相关参考
EGL 库 JavaLib
getField()
invoke()
isNull()
isObjID()
qualifiedTypeName()
remove()
removeAll()
setField()
store()
storeCopy()
storeField()

相关任务
EGL 语句和命令的语法图

使用条款 | 反馈
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.