在 Scala 中,您不需要使用“new”来创建新的“案例类”的原因是什么?
我现在尝试搜索了一段时间没有答案。
最佳答案
案例课为您提供自动生成 apply
在他们的伴生对象上运行,您可以像构造函数一样使用它。
在 斯卡拉 你会发现反编译的字节码apply
函数创建如下:
object Person {
def apply(name: String, age: Integer): Person = new Person(name,age)
}
示例:
case class Person(name: String, age: Integer)
以下三个都做同样的事情。
val p0 = new Person("Frank", 23) // normal constructor
val p1 = Person("Frank", 23) // this uses apply
val p2 = Person.apply("Frank", 23) // using apply manually
所以如果你使用
val p1 = Person("Frank", 23)
它不是构造函数 ,这是一个调用apply方法的方法。请阅读scala-object-apply-functions了解更多信息。
关于class - 为什么 "case class"不需要 "new"来创建新对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11777199/