Wil*_*der 4 javascript java parameters apply
我想用类名和可变数量的参数(即具有可变长度的Object [] args)在Java中创建一个类.有没有办法实现这一目标?
基本上,该方法在Javascript中看起来像这样
function createClass(classname, args) {
protoObject = Object.create(window[classname].prototype);
return window[classname].apply(protoObject,args) || protoObject;
}
// I want to be able to do this:
var resultClass = createClass("someClass", someArrayOfArgs);
Run Code Online (Sandbox Code Playgroud)
只调用函数的简单函数看起来像
function callFunction(functionName, args) {
return window[functionName].apply(null,args);
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
为了澄清,这将是Javascript中的一些示例用法:
function multiplyResult(var1,var2) {
return var1*var2;
}
var result = callFunction("multiplyResult", ["5", "2"]); // == 10
function multiplyObject(var1,var2) {
var result = var1 * var2;
this.getResult = function() { return result };
}
var result = createClass("multiplyObject", ["5", "2"]).getResult(); // == 10
Run Code Online (Sandbox Code Playgroud)
事实证明,你可以简单地提供Object[]给invoke()函数,并且将工作完全一样.apply()在Javascript.采取以下功能.
public int multiply(int int1, int int2) {
return int1*int2;
}
Run Code Online (Sandbox Code Playgroud)
从同一个类,它可以调用函数
Object result = this.getClass().getDeclaredMethod("multiply",classes).invoke(this,ints);
Run Code Online (Sandbox Code Playgroud)
以classes和ints为类似
Class[] classes = new Class[] {int.class, int.class};
Object[] ints = new Object[] {2,3};
Run Code Online (Sandbox Code Playgroud)