在Scala反射中使用参数构造函数创建类

时间:2016-04-26 17:06:05

标签: scala reflection

我有一个可能需要1到4个参数的类。他们总是弦乐。我想根据传递给函数的参数数量创建此类的对象。有没有办法去创建构造函数并将对象数组直接传递给newInstance?

        NewInstanceWithReflection clazz = (NewInstanceWithReflection)Class.forName("NewInstanceWithReflection").newInstance();
        Constructor constructor = NewInstanceWithReflection.class.getDeclaredConstructor( new Class[] {String.class});
        NewInstanceWithReflection object1 = (NewInstanceWithReflection)clazz.newInstance(new Object[]{"StackOverFlow"});

粘贴到sbt解释器的代码似乎不起作用。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

你错了(更不用说,它是java语法,而不是scala)。 像这样的东西应该在scala中起作用:

  classOf[NewInstanceWithReflection]
    .getDeclaredConstructor(classOf[String])
    .newInstance("StackOverFlow")

这就是你在java中所需要的:

  NewInstanceWithReflection
    .class
    .getDeclaredConstructor(String.class)
    .newInstance("StackOverFlow")