【发布时间】:2017-04-01 11:56:11
【问题描述】:
我有:
var className = "scala.collection.immutable.List"
val clazz = Class.forName(className)
val value = ArrayBuffer(1, 2, 3)
所以问题是如何将值转换为类,如果 className 是可变的?我做不到
value.asInstanceOf[clazz.type]
但我可以打电话
value.toList
它使用隐式转换方法完成工作,但是当 className 是可变的时我如何找到并调用此方法?
【问题讨论】:
-
asInstanceOf中的参数不能用变量表示,它是一个编译时实体。clazz.type值 OTOH 仅在运行时存在。 -
谢谢,帽子。问题是当我只有 className 时如何在运行时将 ArrayBuffer(1, 2, 3) 转换为 List ...
-
我不认为你这样做是明智的,但这里是:docs.oracle.com/javase/7/docs/api/java/lang/…
标签: scala class casting implicit