2013-07-24 3 views
0

Я использовал все предложения, которые я мог найти на StackOverflow и других сайтах для этого. Я пытаюсь вызвать метод с использованием отражения. Вот код для моего метода:Вызвать метод с параметром String [] с помощью отражения

public void my_method(String[] args) { 

    for(int i=0; i<args.length; i++) 
    { 
     System.out.println(args); 
    } 
} 

Вот код, который я использовал для отражения

Class[] paramStringArray = new Class[1];  
paramStringArray[0] = String[].class; 
String[] argu = {"hey", "there"}; 

Method method = cls.getDeclaredMethod("my_method", paramStringArray); 
method.invoke(obj, new Object[]{argu}); 

Моя проблема заключается в том, что когда я запускаю программу, я вижу выход распечатана как: [Ljava. lang.String; @ 70a6aa31 [Ljava.lang.String; @ 70a6aa31

Я пробовал все предложения, которые я мог найти. Может кто-нибудь, пожалуйста, помогите мне с этим?

Спасибо!

+0

'Объект # toString()' - ваше ключевое слово. Почему вы пытаетесь продвинуть тему размышления, когда еще не знаете, как печатать объект? Помедленнее. –

+0

'args' является' String [] '. У него нет специального метода 'toString()' для печати его содержимого. Используйте 'Arrays.toString (args);', чтобы возвращать String с содержимым массива. –

ответ

1

Метод my_method() принимает в качестве параметра a String[], а не String. Вы называете другой метод. Код должен выглядеть следующим образом:

paramString[0] = String[].class; 
Method method = cls.getDeclaredMethod("my_method", paramString); 

Чтобы вызвать его, передать String[] в качестве параметра:

method.invoke(obj, new String[]{"x"}); 

Кроме того, тело цикла в my_method() должны относиться к позиции каждого элемента, а не к сам массив:

System.out.println(args[i]); 
+0

Возможно, 'paramStringArray' является' String []. Class'. –

+1

Я уверен, что код не был скопирован правильно, поэтому трудно понять, что представляет собой реальная проблема. –

+0

Ну, я попробовал Object # toString(), прежде чем публиковать этот вопрос. Спасибо, за предложение, хотя – user2033666

1

вы должны напечатать args[i] и не то, что у вас есть.

Также метод следует называть с помощью new String[] вместо new Object[].

+0

Oh !! это была действительно глупая опечатка, которую я сделал. Я изменил ее на args [i], и теперь она отлично работает. :) Спасибо, что заметили это! – user2033666

Смежные вопросы