Я хочу создать класс в Java из имени класса и переменной количества аргументов (т. Е. Аргументов Object [] с переменной длиной). Есть ли способ достичь этого?Javascript .apply() эквивалент метода в 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);
Более простая функция только вызова функции будет выглядеть
function callFunction(functionName, args) {
return window[functionName].apply(null,args);
}
Спасибо!
Для уточнения, это было бы несколько примеров использования в 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
Что именно вы ищете? 1) Возможность использования [varargs] (http://docs.oracle.com/javase/6/docs/technotes/guides/language/varargs.html) в Java или 2) Возможность [вызывать метод через отражения] (http://docs.oracle.com/javase/6/docs/api/java/lang/reflect/Method.html#invoke (java.lang.Object,% 20java.lang.Object ...)) учитывая его имя и массив аргументов? Ваше название и вопрос не совсем совпадают. –
Я не ищу varargs. Я хочу * применить * произвольный список параметров к функции. Также отредактировал мой вопрос :) –
Используйте vararg с Object. Это единственный способ заставить Java принимать любое количество аргументов неизвестного типа для метода. – Stefan