Scala 对象作为字段

标签 scala

这个问题在这里已经有了答案:




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/

相关文章:

scala - Hadoop copyMerge无法正常工作:scala

scala - Scala 2.9 REPL 的 settings.maxPrintString

scala - 如何 "include"另一个 sbt 文件中的常见 sbt 片段

scala - 为什么 Scala 编译器拒绝没有前导空格的函数体?

scala - 方法何时需要(或禁止)使用括号?

scala - 从Scala中的目录读取文件

scala - 无法在 spark-shell 中连接到 Cassandra

Scala 参数类型说明

Scala 简化了嵌套的 monad

scala - 何时使用isInstanceOf和何时使用区分大小写语句(在Scala中)?