我有一个接受Generic类型的类,但我想在运行时使用Reflect.Type变量将泛型类型传递给类。该课程记录在此处:https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Type.html
我编写了一个函数,它接受一个通用类型类名列表作为字符串,并使用反射将它们映射到相应的通用类型
def getGenericTypeByName(names: Map[String, String]): Map[String, reflect.Type] = {
val declaredFields = Types.getClass.getDeclaredFields.toSeq;
val types: Map[String, reflect.Type] = names.map(s => {
val fieldType = declaredFields.find(_.getName.equals(s._2)).getOrElse(null);
if (fieldType != null) {
(s._1, fieldType.getGenericType);
} else {
(s._1, null);
}
});
}
返回值是一个Reflect.Type的Map,它应该可以传递给类中的Generic类型参数,所以我应该能够这样做:
types.map(s => this.GenericClassMap.get(s._1).get.read[s._2]());
但是当我编译时,我收到错误Cannot resolve symbol _2
这里缺少什么? _2应该是可访问的,因为它是一张地图,而且我认为它也应该与泛型类型相匹配。