这个问题在这里已经有了答案:
10 年前关闭。
Possible Duplicate:
val and object inside a scala class?
是否有实质性区别:
class Foo {
object timestamp extends java.util.Date
}
和
class Foo {
val timestamp = new java.util.Date {}
}
拥有一个带有对象字段的类到底意味着什么?它们是做什么用的?是否存在必须使用对象的情况?
谢谢...
最佳答案
使用 object
如果您需要向该字段添加行为,则可能更可取。例如:
class Foo {
object startDate extends java.util.Date {
def isBusinessDay: Boolean = // ...
}
}
class Bar {
lazy val startDate = new java.util.Date {
def isBusinessDay: Boolean = // ...
}
}
foo.startDate
的类型是 foo.startDate.type
,并调用 foo.startDate.isBusinessDay
方法将被静态解析。bar.startDate
的类型另一方面,是结构类型 java.util.Date{ def isBusinessDay: Boolean }
.调用 bar.startDate.isBusinessDay
因此将使用反射并产生不必要的运行时开销。
关于Scala 对象作为字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4392286/