Как часть механизма переписывания, мне нужно получить и выполнить конструктор коллекции того же типа, что и данный экземпляр.Приведенный ниже код обобщает мою попытку.
import scala.reflect.runtime.universe.TypeTag
def getEmptyCollection[N : TypeTag](collection: N): N = {
val runtime = scala.reflect.runtime.universe
val mirror = runtime.runtimeMirror(getClass.getClassLoader)
val classSymbol = runtime.typeOf[N].typeSymbol.asClass
val classMirror = mirror.reflectClass(classSymbol)
val constructorSymbol = runtime.typeOf[N].decl(runtime.termNames.CONSTRUCTOR).asMethod
val constructorMirror = classMirror.reflectConstructor(constructorSymbol)
constructorMirror()
}
val emptyList: List[Int] = getEmptyCollection(List(1, 2, 3))
Этот код, тем не менее, создает исключительную ситуацию: java.lang.InstantiationException было выброшено
Возможно, проблема заключается в "typeOf [N]",но я просто догадываюсьЗнаете ли вы, в чем может быть проблема?
Спасибо!