Как ссылаться на объекты метода в Java? - PullRequest
0 голосов
/ 09 января 2009

Или, другими словами, что не так с чем-то вроде -

new Method[] {Vector.add(), Vector.remove()}

Затмение продолжает говорить мне, что мне нужны аргументы. Но я явно не хочу вызывать методы, я просто хочу использовать их как объекты! Что делать?

Ответы [ 3 ]

6 голосов
/ 09 января 2009

это работает, я не могу не задаться вопросом, что вы делаете с этим?

new Method[] { 
  Vector.class.getMethod("add", Object.class), 
  Vector.class.getMethod("remove", Object.class) 
};
0 голосов
/ 09 января 2009

Это работает:)

Я использую это, чтобы создать переменное число «сложенных» циклов (цикл внутри цикла внутри цикла).

Существует статический метод, которому вы передаете начальный индекс, предел, Object для вызова методов и, наконец, массив методов и массив аргументов.

РЕДАКТИРОВАТЬ: Грубый код - мне потребовалось 3 минуты, чтобы написать, так что, вероятно, там скрывается что-то очень плохое, но общая идея очевидна.

public static void loop(int start, int lessThan, Object obj, Method[] methods, Object[] args) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException {
        lastLoop++;
        for(int i = start; i < lessThan; i++) {
            for(int j = 0; j < methods.length; j++) {
                methods[j].invoke(obj, args[j]);
            }
        }
    }

Если вам интересно, для чего я все это использую - я просто разыскиваю способ делать перестановки, где количество элементов меньше количества позиций. Я столкнулся с проблемами, пытаясь определить переменное количество циклов (которое зависит от количества позиций), поэтому решил обойти это с помощью этого.

0 голосов
/ 09 января 2009

Прежде всего, вы составляете синтаксис здесь. В моих javadocs нет "Vector.add ()".

Вы можете сделать это:


Method [] methods = Vector.class.getMethods();

но вы не можете выполнить эти методы. Здесь нет замыканий или функциональных объектов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...