到处搜索。如何从String(类的名称)创建新实例并返回此实例?确实有答案他们没有回答我怎么能把这个实例转换成我想要的类型。例如:
class ABC
{
//some code
}
现在我想使用类“ABC”的名称创建一个实例(与val abc = new ABC()相同。)
val mirror = universe.runtimeMirror(getClass.getClassLoader);
val classInstance = Class.forName("ABC");
val classSymbol = mirror.classSymbol(classInstance);
val classType = classSymbol.toType;//println(classType) gives ABC
/******this line does not work*****/
classInstance.newInstance().asInstanceOf[classType];
// not asInstanceOf[ABC]
/***********/
因为classInstance.newInstance()的类型为“Any”,我怎么能将它转换为“ABC”类型? 谢谢!
答案 0 :(得分:0)
Scala的类型转换语法为x.asInstanceOf[ABC]
,其中x
是您的对象(上面的代码中为classInstance.newInstance()
),ABC
是类型你投了。注意括号是方形的,而不是圆形 - 这是一个带参数的参数。
答案 1 :(得分:0)
我可能错了,但我认为你所寻找的东西没有意义。假设,为了争论,你可以做到这一点。测试问题是:你打算做什么 next ?编译器显然不知道它是什么类,所以你不能直接调用方法或访问字段。
所以我认为您可能需要使用反射 - Scala或Java - 因此不需要 asInstanceOf 。