Java™ objects must be instantiated
and referenced by a program variable. The object reference is
stored in the variable and can be passed as a parameter or returned
from a program function. The Java
objects are passed by reference to functions. This means that
the called function does not get a clone of the object, but
rather a handle to the original object. The function can then
manipulate and modify the original object provided by the
caller:
IMPORT JAVA java.lang.StringBuffer
MAIN
DEFINE x java.lang.StringBuffer
LET x = StringBuffer.create()
CALL change(x)
DISPLAY x.toString()
END MAIN
FUNCTION change(sb)
DEFINE sb java.lang.StringBuffer
CALL sb.append("abc")
END FUNCTION
Similarly, Java object references
can be returned from functions:
IMPORT JAVA java.lang.StringBuffer
MAIN
DEFINE x java.lang.StringBuffer
LET x = build()
DISPLAY x.toString()
END MAIN
FUNCTION build()
DEFINE sb java.lang.StringBuffer
LET sb = StringBuffer.create() -- Creates a new object.
CALL sb.append("abc")
RETURN sb -- Returns the reference to the object, not a copy/clone.
END FUNCTION