【发布时间】:2019-06-26 12:54:06
【问题描述】:
我有一个 case class Disconnect(nodeId: PublicKey),其中有 1 个参数,但是在代码的其他部分中,它碰巧在没有参数的情况下使用,即:Disconnect 并且编译器没有捕获错误,请注意我'我还尝试使用-Xlint 选项运行编译器,但仍然无法捕获错误。
- scala 版本:2.11.12
- 目标 jvm 版本:1.8
- 使用选项编译的代码:
-deprecation-feature-language:postfixOps-language:implicitConversions-Xfatal-warnings-unchecked-Xmax-classfile-name 140-nobootcp
[历史] 它曾经是case object Disconnect,但在某些时候它已更改为案例类并添加了一个参数,在代码中它仍然是无参数实例化的,编译器无法注意到它。我尝试将-Xlint 选项添加到编译器,但没有帮助。
在 Peer.scala 中
object Peer {
// other code
case class Disconnect(nodeId: PublicKey)
// more code
}
在 Channel.scala 中
// inside a function
revocationTimeout.peer ! Peer.Disconnect
//
我希望编译器能够捕捉到 case 类的误用并且无法编译。
编辑:感谢大家的回复,确实编译器做得很好,Disconnect 被用作类型而不是案例类实例,这是可能的,因为它用于接受 Any 的函数中作为参数。
【问题讨论】: