def ctor(on_class, *args)
parameters = []
classes = []
args.each do |obj|
case obj
when nil
classes.push(nil)
parameters.push(nil)
when Hash
vclass = obj.keys.first
value = obj[vclass]
classes.push(vclass.java_class)
parameters.push(value)
else
parameters.push obj
classes.push obj.class.java_class
end
end
on_class = [on_class.java_class].to_java(java.lang.Class)[0]
ctor = on_class.getDeclaredConstructor(classes.to_java(java.lang.Class))
ctor.setAccessible(true)
ctor.newInstance(parameters.to_java(java.lang.Object))
end