斯卡拉类铸造



我有:

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,则会引发异常。我宁愿评论我的答案,但声誉不够

相关内容

  • 没有找到相关文章

最新更新