@Override public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, String name, IRubyObject[] args) { int len = args.length; Object[] convertedArgs = new Object[len]; JavaMethod method = (JavaMethod)findCallable(self, name, args, len); if (method.isVarArgs()) { len = method.getParameterTypes().length - 1; convertedArgs = new Object[len + 1]; for (int i = 0; i < len && i < args.length; i++) { convertedArgs[i] = convertArg(args[i], method, i); } convertedArgs[len] = convertVarargs(args, method); } else { convertedArgs = new Object[len]; for (int i = 0; i < len && i < args.length; i++) { convertedArgs[i] = convertArg(args[i], method, i); } } return method.invokeStaticDirect(convertedArgs); }
@Override public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, String name, IRubyObject[] args) { int len = args.length; Object[] convertedArgs = new Object[len]; JavaMethod method = (JavaMethod)findCallable(self, name, args, len); if (method.isVarArgs()) { len = method.getParameterTypes().length - 1; convertedArgs = new Object[len + 1]; for (int i = 0; i < len && i < args.length; i++) { convertedArgs[i] = convertArg(args[i], method, i); } convertedArgs[len] = convertVarargs(args, method); } else { convertedArgs = new Object[len]; for (int i = 0; i < len && i < args.length; i++) { convertedArgs[i] = convertArg(args[i], method, i); } } return method.invokeStaticDirect(convertedArgs); }