Отражение Java, когда метод имеет переменную arglist - PullRequest
5 голосов
/ 06 декабря 2011

У меня есть что-то вроде следующего:

public class A { 
    public void theMethod(Object arg1) {
        // do some stuff with a single argument
    }
}

public class B {
    public void reflectingMethod(Object arg) {
        Method method = A.class.getMethod("theMethod", Object.class);
        method.invoke(new A(), arg);
    }
}

Как мне изменить это, чтобы я мог вместо этого сделать следующее?

public class A { 
    public void theMethod(Object... args) {
        // do some stuff with a list of arguments
    }
}

public class B {
    public void reflectingMethod(Object... args) {
        Method method = A.class.getMethod("theMethod", /* what goes here ? */);
        method.invoke(new A(), args);
    }
}

Ответы [ 2 ]

5 голосов
/ 06 декабря 2011
A.class.getMethod("theMethod", Object[].class);
0 голосов
/ 08 декабря 2011

Предложение Дартениуса в комментариях к исходному вопросу сработало, как только я обернулся, как это сделать.

public class A {
    public void theMethod(ArrayList<Object> args) { // do stuff 
    }
}

public class B {
    public void reflectingMethod(ArrayList<Object> args) {
        Method method;
        try {
            method = A.class.getMethod("theMethod", args.getClass());
            method.invoke(new A(), args);
        } catch (Exception e) {}
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...