我只是遇到了一个讨厌的错误,基本上,
sealed trait T extends Product with Serializable
case object O extends T
val mistake = List("foo", "bar", O /* forgot O.toString */)
所以 scala 继续推断List[java.io.Serializable]
这个列表,因为String
is not scala.Serializable
, but is java.io.Serializable
,并且 T is scala.Serializable
which extends java.io.Serializable
。我通常依靠 WartRemover 来捕捉此类错误,但在这种情况下它没有。显然它只抱怨 inferring scala.Serializable
。有什么理由不警告疣java.io.Serializable
吗?