2014-11-04 1 views
1

Я попытался следующий код:Java getConstructor (. String [] класс)

constructor = oneClass.getConstructor(new Class[]{String[].class}); 

return constructor.newInstance(new String[]{"String01","String02"}) 

(возвращение заявление возвращать IllegalArgumentException)

И

Class stringArray = Class.forName("[Ljava.lang.String;"); 

constructor = oneClass.getConstructor(new Class[]{stringArray}) 

return constructor.newInstance(new String[]{"String01","String02"}) 

(возвращение Заявление возврата исключение IllegalArgumentException)

Как сказать, что я хочу создать экземпляр конструктора со Стрингом g [] в качестве аргумента.

Thank you.

+0

возможно дубликат [Проблема с построением класса с помощью отражения и аргументы массива] (http://stackoverflow.com/questions/5760569/problem-with-constructing-class-using-reflection-and-array-arguments) – ToYonos

ответ

0

Что об этом:

constructor = oneClass.getConstructor(String[].class); 
return constructor.newInstance(new Object[]{new String[]{"String01","String02"}}) 

Предположим, что ваш конструктор, как это:

public class OneClass 
{ 
    public OneClass(String[] args) 
    { 
     // ... 
    } 
} 

Источник: Problem with constructing class using reflection and array arguments

+0

Работает отлично спасибо – Max

+0

Большое спасибо. – Max

+0

Вы приветствуете verrrrry :) – ToYonos

0

Вызов newInstance непосредственно с новым String [] путает, потому что это не уверен, что эта новая String [] является одним аргументом или альтернативным способом представления varargs. Назначив его объекту «abc» ниже, он определенно сообщает компилятору, что abc (представляющий массив String) является одним аргументом arg, arg0, а не varargs, представляющим несколько аргументов.

import java.lang.reflect.Constructor; 

public class Test { 
    public Test(String[] args) { 
     System.out.println(args); 
    } 

    public static void main(String[] args) throws Exception { 
     Constructor<Test> constructor = Test.class.getConstructor(String[].class); 
     new Test(new String[]{}); 
     Object abc = new String[]{}; 
     constructor.newInstance(abc); 
    } 
}