Разница вариационных аргументов и определения массива для отражения - PullRequest
2 голосов
/ 16 марта 2011

У меня есть следующие два фрагмента кода:

public class C {
    public void method1(String[] args) {

    }

    public void method2(String... args) {

    }
}

Затем я получаю экземпляры метода описанных выше методов, используя отражение.

Method m1 = nil;
Method m2 = nil;
Class c = Class.forName("C");
for (Method m : c.getMethods()) {
    if (m.getName().equals("method1")) m1 = m;
    if (m.getName().equals("method2")) m2 = m;
}

m1.getParameters () и m2.getParameters () возвращает равные списки экземпляров класса.Аргумент m1 и аргумент m2 оба представлены в виде массивов.Но на самом деле они не одинаковы.Компилятор не разрешит

m1("a", "b");

Вопрос:

Есть ли какой-либо флаг, указывающий, является ли параметр переменным или просто обычным массивом?

1 Ответ

2 голосов
/ 23 декабря 2011

Класс java.lang.reflect.Method имеет метод isVarArg ().Показывает, является ли последний аргумент метода переменным.

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