| The Java interface / Advanced programming | |
import java.lang.String;
public class MyClass {
public static void ShowStrings( String... sl ) {
for ( String s : sl )
System.out.println(s);
}
}
In
order to call such a method from the Genero program, create a Java array of the type of the variable argument, fill the
array with objects and call the method with that array:
IMPORT JAVA java.lang.String
IMPORT JAVA MyClass
MAIN
TYPE sl_t ARRAY[] OF java.lang.String
DEFINE sl ARRAY[] OF java.lang.String
LET sl = sl_t.create(2)
LET sl[1] = "Value 1"
LET sl[2] = "Value 2"
CALL MyClass.ShowStrings(sl)
END MAIN
Since Java arrays have a static size, you must create the Java array with the exact number of variable arguments to be passed to the method.
IMPORT JAVA java.lang.String
IMPORT JAVA MyClass
MAIN
DEFINE a DYNAMIC ARRAY OF STRING
LET a[1] = "Value 1"
LET a[2] = "Value 2"
LET a[3] = "Value 3"
CALL my_show_strings(a)
LET a[4] = "Value 1"
LET a[5] = "Value 2"
CALL my_show_strings(a)
END MAIN
FUNCTION my_show_strings(sa)
TYPE sl_t ARRAY[] OF java.lang.String
DEFINE sa DYNAMIC ARRAY OF STRING
DEFINE sl ARRAY[] OF java.lang.String
DEFINE i INTEGER
LET sl = sl_t.create(sa.getLength())
FOR i=1 TO sa.getLength()
LET sl[i] = sa[i]
END FOR
CALL MyClass.ShowStrings(sl)
END FUNCTION
public class MyClass {
private static void _ShowStrings( String... sl ) {
for ( String s : sl )
System.out.println(s);
}
public static void ShowStrings(String s1) {
_ShowStrings(s1);
}
public static void ShowStrings(String s1, String s2) {
_ShowStrings(s1, s2);
}
public static void ShowStrings(String s1, String s2, String s3) {
_ShowStrings(s1, s2, s3);
}
}