getField()

系统函数 JavaLib.getField 返回指定的对象或类的指定字段的值。JavaLib.getField 是若干 Java™ 访问函数的其中一个。

  JavaLib.getField(
    identifierOrClass javeObjIdOrClass in,
    field STRING in)
  returns (result anyJavaPrimitive)
result
结果字段是必需的,并且接收在第二个自变量中指定的字段的值。下列情况适用:
  • 如果接收的值具有 BigDecimal、BigInteger、byte、short、int、long、float 或 double 类型,则结果字段必须具有数字数据类型。特征不需要与值匹配;例如,float 型的值可以存储在声明为不带小数位的返回变量中。有关处理溢出的详细信息,请参阅 VGVar.handleOverflowsysVar.overflowIndicator
  • 如果接收的值为布尔值,则结果字段必须具有数字基本类型。值 1 表示 true,值 0 表示 false。
  • 如果接收的值为字节队列,则结果字段必须具有 HEX 类型。有关不匹配的长度的详细信息,请参阅赋值
  • 如果接收的值为字符串或字符型,则结果字段必须具有 CHAR、DBCHAR、MBCHAR、STRING 或 UNICODE 类型:
    • 如果结果字段具有 MBCHAR、STRING 或 UNICODE 类型,则接收的值总是具有相应类型
    • 如果结果字段具有 CHAR 类型,则在接收的值包括与 DBCHAR 字符相对应的字符的情况下,可能会发生问题
    • 如果结果字段具有 DBCHAR 类型,则在接收的值包括与单字节字符相对应的 Unicode 字符的情况下,可能会发生问题

    有关不匹配的长度的详细信息,请参阅赋值

  • 如果本机 Java 方法未返回值或返回 null,则发生错误 00001004,列示如下。
identifierOrClass
此自变量是下列其中一个实体:
  • 引用对象空间中的对象的标识;或者
  • Java 类的标准名称。

此自变量是字符串文字或类型为 CHAR、DBCHAR、MBCHAR、STRING 或 UNICODE 的变量。如果正在指定对象的标识,则该标识必须被强制类型转换为 objID,如稍后的示例所示。如果您打算在下一个自变量中指定静态字段,则建议在此自变量中指定一个类。

EGL 将从自变量值的开头和末尾除去单字节和双字节空格,其中,自变量值是区分大小写的。

field
要读取的字段的名称。

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

下面是一个示例:
  myVar = JavaLib.getField( (objId)"myID", "myField" );

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

sysVar.errorCode 中的值 描述
00001000 被调用方法抛出了异常,或者作为类初始化的结果而抛出了异常
00001001 对象为 null,或者指定的标识不在对象空间中
00001002 具有指定名称的公用方法、字段或类不存在或无法被装入
00001004 方法返回 null、方法未返回值或者字段的值为 null
00001005 返回的值与返回变量的类型不匹配
00001007 在尝试获取关于方法或字段的信息时抛出了 SecurityException 或 IllegalAccessException;或者尝试设置已被声明为最终字段的字段的值
00001009 必须指定标识而不是类名;方法或字段不是静态的

相关概念

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

相关参考
赋值
BIN 和整数类型
EGL 库 JavaLib
异常处理

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

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