| The Java interface / Advanced programming | |
Java™ arrays and Genero arrays are different. In order to interface with Java arrays, the Genero language has been extended with a new kind of arrays, called "Java arrays".
Java arrays have to be created with a given length. Like native Java arrays, the length cannot be changed after the array is created.
To create a Java array in Genero, you must define a TYPE in order to call the create() type method of Java arrays. The type of the elements in a Java array must be one of the language types that have a corresponding primitive type in Java (such as INTEGER (int), FLOAT (double)), or it must be a Java class such as java.lang.String.
The Java arrays are passed to Java methods by reference, so the elements of the array can be manipulated in Java. Further, Java arrays can be created in Java code and returned to the Genero program.
MAIN TYPE int_array_type ARRAY[] OF INTEGER DEFINE ja int_array_type LET ja = int_array_type.create(100) LET ja[10] = 123 DISPLAY ja[10], ja[20] DISPLAY ja.getLength() END MAIN
IMPORT JAVA java.lang.String
MAIN
TYPE string_array_type ARRAY[] OF java.lang.String
DEFINE names string_array_type
LET names = string_array_type.create(100)
LET names[1] = "aaaaaaa"
DISPLAY names[1]
END MAIN
IMPORT JAVA com.fourjs.fgl.lang.FglRecord
MAIN
TYPE record_array_type ARRAY[]
OF com.fourjs.fgl.lang.FglRecord
DEFINE ra record_array_type
TYPE r_t RECORD
id INTEGER,
name VARCHAR(100)
END RECORD
DEFINE r r_t
LET ra = record_array_type.create(100)
LET r.id = 123
LET r.name = "McFly"
LET ra[10] = r
INITIALIZE r TO NULL
LET r = CAST (ra[10] AS r_t)
DISPLAY r.*
END MAIN
IMPORT JAVA java.lang.Class
IMPORT JAVA java.lang.reflect.Method
MAIN
DEFINE c java.lang.Class
DEFINE ma ARRAY[] OF java.lang.reflect.Method
DEFINE i INTEGER
LET c = Class.forName("java.lang.String")
LET ma = c.getMethods()
FOR i = 1 TO ma.getLength()
DISPLAY ma[i].toString()
END FOR
END MAIN
public static int [] createIntegerArray(int size) {
return new int[size];
}