getField()
The javaLib.getField() system function returns the value of a specified field within a specified Java™ object or class in the EGL Java™ object space.
For more about the EGL Java™ object space in which javaLib.getField() and similar functions operate, see Java access functions. EGL maintains this method of Java™ access for compatibility with earlier versions. For new code, use the more powerful ExternalType syntax; for more information, see ExternalType part.
Syntax
javaLib.getField(
identifierOrClass javeObjIdOrClass in,
field STRING in)
returns (result anyJavaPrimitive)
- identifierOrClass
- Any of the following entities can serve as this argument:
- A Java™ objID, to get the value of an object field.
- A case-sensitive string representing a class name, to get the value of class field. Single- and double-byte blanks are stripped from the beginning and end of the string.
- field
- The case-sensitive name of the field to read. Input can be any variable or expression that is assignment compatible with the STRING type. Single- and double-byte blanks are stripped from the beginning and end of the string.
- result
- The result is the value of the field specified in the second argument.
The following cases apply:
- If the received value is a BigDecimal, BigInteger, byte, short, int, long, float, or double, the result variable must be a numeric data type. The characteristics do not need to match the value; for example, a float can be stored in a return variable that is declared with no decimal digits. For details on handling overflow, see the sysVar topic overflowIndicator.
- If the received value is a Boolean, the result variable must be a BOOLEAN or numeric primitive type. For numeric variables, the value is 1 for true, or 0 for false.
- If the received value is a byte array, the result variable must be of type HEX. For details on mismatched lengths, see "Assignments."
- If the received value is a String or char, the result field must
be of type CHAR, DBCHAR, MBCHAR, STRING, or UNICODE:
- If the result field is of type MBCHAR, STRING, or UNICODE, the received value is always appropriate
- If the result field is of type CHAR, problems can arise if the received value includes characters that correspond to DBCHAR characters
- If the result field is of type DBCHAR, problems can arise if the received value includes Unicode characters that correspond to single-byte characters
For more information on mismatched lengths, see Assignments.
Example
The following example shows the getField() function,
with myID cast as objID:
myVar = javaLib.getField("myID" as "objID:java", "myField");
Error considerations
If the v60ExceptionCompatibility program property is not set, or is set to NO, an exception causes EGL to throw a JavaObjectException. Other errors cause EGL to throw a RuntimeException.
If the v60ExceptionCompatibility program property is set to YES, an error during processing of javaLib.getField() can set sysVar.errorCode to a value listed in the next table.
| Value in sysVar.errorCode | Description |
|---|---|
| 00001000 | An exception was thrown by an invoked method or as a result of a class initialization. |
| 00001001 | The object had a null value, or the specified identifier was not in the object space. |
| 00001002 | A public method, field, or class with the specified name does not exist or cannot be loaded. |
| 00001004 | The method returned a null value, the method does not return a value, or the value of a field was null. |
| 00001005 | The returned value does not match the type of the variable which you assigned it. |
| 00001007 | A SecurityException or IllegalAccessException was thrown during an attempt to get information about a method or field; or an attempt was made to set the value of a field that was declared final. |
| 00001009 | An identifier rather than a class name must be specified; the method or field is not static. |