【发布时间】:2020-07-29 00:39:43
【问题描述】:
这段代码运行正常
def init = {
var jobPackageClassSet:Set[Class[_]] = ClassUtil.getClassSetFromPackge("com.test.job");
val jobAnnotion = classOf[JobAnnotation];
val a = jobPackageClassSet.asScala.filter { cls =>
cls.isAnnotationPresent(jobAnnotion)
}.map(cls => cls.getAnnotation(jobAnnotion).jobName -> cls.getName).toMap
}
但是当我将代码(cls.getAnnotation(jobAnnotion).jobName -> cls)更改如下时,会导致错误
def init = {
var jobPackageClassSet = ClassUtil.getClassSetFromPackge("com.test.job");
val jobAnnotion = classOf[JobAnnotation];
val a = jobPackageClassSet.asScala.filter { cls =>
cls.isAnnotationPresent(jobAnnotion)
}.map(cls => cls.getAnnotation(jobAnnotion).jobName -> cls).toMap
}
错误:
无法证明 (String, Class[?0]) forSome { type ?0 } (T, U)。不是 方法 toMap 的足够参数
从这个问题:Cannot prove that Unit <:< (T, U)把我的代码改成这个,还是报错。
def init = {
var jobPackageClassSet = ClassUtil.getClassSetFromPackge("com.test.job");
val jobAnnotion = classOf[JobAnnotation];
val a = jobPackageClassSet.asScala.filter { cls =>
cls.isAnnotationPresent(jobAnnotion)
}.map(cls => cls.getAnnotation(jobAnnotion).jobName -> cls).collect{case t@(k:String,v:Class[_]=>t)}.toMap
}
有没有人早点得到这个?
【问题讨论】:
-
请突出显示错误文本,以便人们快速轻松地了解。
标签: scala type-conversion