我正在努力做一些表面上应该相当简单的事情。我正在尝试将Java列表转换为Scala列表,然后使用map方法将函数应用于每个元素,然后返回新元素的列表。
我添加了额外的类型信息以尝试确认最新情况。
class Incidents extends AggregateBase {
def toEvent(entry: EventStoreEntry) = entry.event match {
case "raised" => buildRaised(entry)
}
def buildRaised(entry: EventStoreEntry): IncidentsEventRaised = {
return new IncidentsEventRaised(entry)
}
}
def getAll(aggregateName: String, aggregateId: String): List[EventInstanceBase] = {
val aggregate = new Incidents()
val entries:List[EventStoreEntry] = accessor.findAll(aggregateName, aggregateId).all().asScala.toList
return entries.map((e:EventStoreEntry) => aggregate.toEvent(e)).asInstanceOf[List[EventInstanceBase]]
}
我遇到以下异常:
java.lang.ClassCastException:scala.runtime.BoxedUnit无法强制转换为EventInstanceBase
任何人都可以解释发生了什么吗?感谢
答案 0 :(得分:1)
尝试为此提供显式返回类型:
def toEvent(entry: EventStoreEntry)
答案 1 :(得分:0)
删除{{1}}关键字。它的行为与java不同 - 它通过抛出NonLocalReturn异常来展开堆栈,在这种情况下会破坏你的地图调用。
不应在scala文件中使用return关键字。