An open type is a type based on a generic parameter, or an array of an open type, or a generic type where one of the generic arguments is itself an open type.
In the following example item1 and item2 are passed by reference. To fix the error, they must be passed by value.
$set ilusing(java.lang.Comparable)
class-id GenericMath.
method-id main static.
01 n1 binary-double.
01 n2 binary-double.
set n1 to 999
set n2 to 100
display n1 space n2
display self::Min[binary-double](n1 n2)
display self::Max[binary-double](n1 n2)
goback.
end method.
method-id Min using T static.
constraints.
constrain T implements type java.lang.Comparable.
procedure division using by reference item1 as T item2 as T *> generic params NOT passed by value
returning res as T.
if item1::compareTo(item2) < 0
set res to item1
else
set res to item2
end-if
end method.