首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java getConstructor(String[].class)

java getConstructor(String[].class)
EN

Stack Overflow用户
提问于 2014-11-04 19:50:28
回答 2查看 2.7K关注 0票数 1

我尝试了以下代码:

代码语言:javascript
复制
constructor = oneClass.getConstructor(new Class[]{String[].class});

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

( return语句返回一个IllegalArgumentException)

代码语言:javascript
复制
Class stringArray = Class.forName("[Ljava.lang.String;");

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

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

( return语句返回一个IllegalArgumentException)

怎么说呢,我想用String[]作为参数实例化一个构造函数。

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2014-11-04 19:55:34

这样如何:

代码语言:javascript
复制
constructor = oneClass.getConstructor(String[].class);
return constructor.newInstance(new Object[]{new String[]{"String01","String02"}})

假设你的构造函数是这样的:

代码语言:javascript
复制
public class OneClass
{
    public OneClass(String[] args)
    {
        // ...
    }
}

来源:Problem with constructing class using reflection and array arguments

票数 1
EN

Stack Overflow用户

发布于 2014-11-04 20:01:22

使用新的String[]直接调用newInstance会使它感到困惑,因为它不确定新的String[]是一个参数,还是表示变量的另一种方式。通过将其分配给下面的对象" abc“,它明确地告诉编译器abc(表示字符串数组)是一个arg,准确地说是arg0,而不是一个表示多个参数的varargs。

代码语言:javascript
复制
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);
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26734456

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档