* object Scala不能定义静态成员,用定义单例对象代之; * case class被称为样例类,是一种特殊的类,常被用于模式匹配。 * *一、class 和 object 关系: * 1.单例对象不能带参数,类可以 * 2.对象可以和类名一样时,object被称为伴生对象,class被称为伴生类; * 3.类和伴生对象可以相互访问其私有属性,但是...
多说一句,case class除了可以用匹配模式外,还多了一个特点就是会默认配上一个companion object,里面有默认的apply方法,所以这张图的例子中我就可以看起来不用new地实例化对象。 这么看,case class是class功能上的一个加强,并且没有什么坏处,这么一想,以后直接把所有class都声明成case class好了。 这部分以后还要...
总结起来,case object适用于表示无状态、不可变的单例对象,以及表示枚举值、标识符、配置信息和消息类型等场景。 需要注意的是,由于case object是不可变的,一旦创建就不能修改其字段或状态。如果需要保存状态或可变性,应该使用case class而不是case object。case class允许定义可变字段,并且可以在需要时对其进行更改。
1.类中有参和无参,当类有参数的时候,用case class ,当类没有参数的时候那么用case object。 1.4 当类被声明为case class的时,scala会做的事情 1.构造器中的参数如果不被声明为var的话,它默认的话是val类型的,但一般不推荐将构造器中的参数声明为var 2.自动创建伴生对象,同时在里面给我们实现子apply方法,使...
首先我们我们对case class 和case object类型对象进行反编译 首先来编译 case class,有如下编译内容: caseclassPerson(age:Int,name:String) 它会产生两个文件如下: Person.class的编译内容如下: import scala.Function1; import scala.Option; import scala.Product; ...
* 三、case class 和 case object 区别:* 1.类中有参和⽆参,当类有参数的时候,⽤case class ,当类没有参数的时候那么⽤case object。* * 四、当⼀个类被声名为case class的时候,scala会帮助我们做下⾯⼏件事情:* 1.构造器中的参数如果不被声明为var的话,它默认的话是val类型的,但⼀...
1. 既然是单例,就不能被new,如object名为SharkObj不能写成 1 2 //var so = new SharkObj //error varso=SharkObj//正确 2. 可以直接写类名调用方法,假设SharkObj有方法m(x:Int) 1 SharkObj.m(1) 那case classes 又是做什么的呢? 你可以就把他理解成一个普通的class,但是又略有不同,总结如下: ...
val b = ApplyTest() 会直接调用 object 的 apply 方法 常用 的在 apply 方法中新建一个对象 val c = new ApplyTest() 新建一个对象 使用 c() 会调用 object中的 apply 方法 样例类 case class cat(name:String) 不用new 可以直接用的 case class kl(name:String,age:Int){} ...
Scala的case class使得对对象进行模式匹配变得非常方便,简单的来说,Scala的case class就是在普通的类定义前加case这个关键字,然后你可以对这些类来模式匹配。 在我们详细介绍Scala的Case class和模式匹配之前,我们可以通过一个简单的例子
object CaseClassDemo01{defmain(args:Array[String]):Unit={print("CaseClass")}}abstractclassAmountcaseclassDollar(value:String)extendsAmountcaseclassCurrency(value:Double,unit:String)extendsAmountcaseobject NoAmountextendsAmount 运行后,使用反编译打开,会发现一个样例类 Dollar会生成Dollar$.class和Dollar.class...