为案例类的 equals/hashCode 方法生成什么代码?
我有一些 Java 代码,我正在将其转换为 Scala。
该代码由一些不可变的类组成,这些类适合 Scala 中 case 类
的用途。
但我不想引入错误,因此我想确保为 equals
和 hashCode
生成的代码与当前实现等效。
我已经看过“Scala 编程”,但它只说
第三,编译器添加了 toString 方法的“自然”实现, hashCode,等于你的类。
I have some Java code which I'm translating to Scala.
The code consists of some immutable classes which would fit the purpose of a case class
in Scala.
But I don't want to introduce bugs, therefore I want to be sure that the code being generated for equals
and hashCode
is/behaves equivalent to the current implementation.
I already looked in "Programming in Scala" but it only says
Third, the compiler adds “natural” implementations of methods toString,
hashCode, and equals to your class.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
Scala 有一个编译器选项
-Xprint:typer
,您可以使用它来获取“内部使用的后输入源代码”。在这里你会看到类似的内容:
但是,这并没有告诉你 hashCode 是如何生成的。这是其来源:
并且,在这个示例中, equals 模式匹配的第一种情况就是:
Scala has a compiler option
-Xprint:typer
, which you can use to get the "post-typing source code that it uses internally".Here you see something like:
But, this doesn't tell you how hashCode is generated. Here's the source for that:
And, in this example, the first case of the equals pattern matching would just be: