我有:
var className = "scala.collection.immutable.List"
val clazz = Class.forName(className)
val value = ArrayBuffer(1, 2, 3)
所以问题是如果类名是可变的,如何将值转换为类?我做不到
value.asInstanceOf[clazz.type]
但我可以打电话
value.toList
它使用隐式转换方法完成了这项工作,但是当 className 是变量时,我如何找到并调用此方法?
我不知道
从ArrayBuffer
转换为任何集合的神奇方法,但您可以调用getMethod
来查找和调用toList
方法:
val method = value.getClass.getMethod("toList")
method.invoke(value)
如果在值中找不到toList
,则会引发异常。我宁愿评论我的答案,但声誉不够