Scala:它是一个类实例吗?

前端之家收集整理的这篇文章主要介绍了Scala:它是一个类实例吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果我运行此代码(见下文),我将CaseClass作为打印消息.

case class CaseClass(var name: String)

object Main extends App {
  val obj = CaseClass
  println(obj)
}

但是这是什么意思?我的意思是CaseClass类似于Java的CaseClass.class?

解决方法

定义case类时,它实际上定义了一个类和一个对象,它们都具有相同的名称.当你说val obj = CaseClass时,你实际上是将对象,一个单例对象分配给obj.

它有点像:

class NonCaseClass(var name: String) {  // the actual class
  override def toString = "the class version" 
}
object NonCaseClass {                   // singleton companion object
  override def toString = "the object version" 
}

val obj = NonCaseClass   // this assigns the companion object to a variable
println(obj)
// the object version

这与实例化CaseClass类的实例不同:

val obj2 = new NonCaseClass("x")
println(obj2)
// the class version

猜你在找的Scala相关文章