【发布时间】:2011-11-28 03:22:09
【问题描述】:
当-unchecked 被启用时,为什么以下不产生警告:
object Order {
sealed trait EntryOption
case object EmptyEntry extends EntryOption
trait Entry extends EntryOption
def isEmpty(a: EntryOption): Boolean = a match {
case EmptyEntry => true
// case _: Entry => false
}
}
在 Scala 2.8.0 的日子里,我似乎有确切的 same problem before,但没有足够的答案。
编辑
@Jed 仅针对非抽象类Entry 发出警告对我来说没有意义。考虑以下情况:
trait Order {
sealed trait EntryOption
case object EmptyEntry extends EntryOption
abstract sealed class Entry extends EntryOption
def isEmpty(a: EntryOption): Boolean = a match {
case EmptyEntry => true
// case _: Entry => false
}
}
trait OrderImpl extends Order {
final class EntryImpl extends Entry
}
使警告出现的唯一方法是在Order 中有一个具体的类Entry!
【问题讨论】: