Невозможно вызвать метод с переменными аргументами, используя отражение в Java - PullRequest
0 голосов
/ 24 мая 2018

Когда метод m равен (, где m - метод, который будет вызван с использованием отражения )

public static Optional<JsonNode> concat(ObjectNode entity, String separator, String fieldName1,
          String fieldName2) 

Тогда я смогу получить вычисленное значение(, где вычисленное значение - это значение, полученное с использованием отражения)

Хотя, когда метод m равен

public static Optional<JsonNode> concat(ObjectNode entity, String ...separatorAndField)

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

Я вызываю метод следующим образом: -

   computedValue = (Optional<JsonNode>) m.invoke(null, methodArgs);

Примечание: - methodArgs объявлен как массив объектов.

1 Ответ

0 голосов
/ 24 мая 2018

Вот разница между вызовом varargs и не-varargs статического метода через отражение:

class Main
{
    public static void foo(String fieldName1, String fieldName2)
    {
        System.out.println(fieldName1 + "," + fieldName2);
    }

    public static void bar(String... fields)
    {
        System.out.println(String.join(",", fields));
    }

    public static void main(String[] args) throws Exception
    {
        final Method foo = Main.class.getMethod("foo", String.class, String.class);
        foo.invoke(null, "aaa", "bbb");

        final Method bar = Main.class.getMethod("bar", String[].class);
        bar.invoke(null, (Object) new String[] {"ccc", "ddd", "eee"});
    }
}

Вывод:

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