所以我尝试使用以下语句创建类的实例(简化):
class A
classOf[A].newInstance()
电话会引发:
java.lang.InstantiationException: A$A426$A$A426$A
Caused by: java.lang.NoSuchMethodException: A$A426$A$A426$A.<init>()
我确实尝试使用不同的变体定义 init()方法但没有成功。我错过了什么?
提前致谢。
相关,没有为我工作:
答案 0 :(得分:1)
我怀疑你的问题是A在anther类中声明了。见这个例子:
import org.specs2.mutable.Specification
class StackoverflowSpec extends Specification {
class B
"A" should {
"be instantiatable" in {
classOf[A].newInstance() must not(beNull)
}
}
"B" should {
"throw an instantiation exception" in {
classOf[B].newInstance must throwAn[InstantiationException]
}
}
}
class A
我认为正在发生的事情是,在jvm中,您的类是A
和StackoverflowSpec$B
,并且StackoverflowSpec$B
需要将StackoverflowSpec
传递给它的构造函数,因为它是一个内在阶级。
答案 1 :(得分:0)
感谢您对内部课程的建议,但实际上它与IntelliJ IDEA&#39; scala工作表有关。 - 具有交互式评估的scala沙箱文件。出于某种原因,上面描述的实例化仅在工作表中抛出,它在普通的Scala REPL中工作。