样例类
在scala中样例类是一种特殊的类,一般用于保存数据,在并发编程,Spark ,Flume 开发中会经常用到它。
格式:
case class className([var/val] 变量1:类型,变量2:类型){}
-
如果有不写,则变量的修饰符默认为 val, 即 val 可以省略不写
-
如果要实现某个成员变量值可以被修改,则需要手动添加 Var 来修饰此变量
参考代码:
Object demo{
// 定义样例类
case class Person(name:String="张三",var age:Int = 20){}
// 定义main方法
def main(args:Array[String]) Unit: = {
// 未修改
val p = new Person
println(s"${p.name},${p.age}")
// 修改后
p.age = 30
println(s"${p.name},${p.age}")
}
}
默认方法:
-
apply() 方法
可以让我们快速使用类名创建对象,省去了 new 这个关键字
val p = Pserson()
-
toString() 方法
可以让我们通过输出语句打印对象时,之间打印该对象的各个属性值
-
equals() 方法
可以让我们直接使用 == 来判断两个样例对象的所有成员对象值是否相等
-
hashCode() 方法
用来获取对象的哈希值,即:同一对象哈希值肯定相同。
-
copy() 方法
用来快速创建一个属性值相同的实例对象,还可以使用带参数的形式给指定成员变量赋值
-
unapply() 方法
一般用作提取器
样例对象
在 Scala中 使用 case 修饰的单例对象就叫 样例对象,而且他没有主构造器,主要用于:
-
当做枚举值使用
-
作为没用任何参数的消息传递
格式:
case object 样例对象名
参考代码:
Object demo{
trait Sex
case object Male extends Sex
case object Female extends Sex
case class Person(var name:String,var age:Sex){}
def main(args:Array[String]) Unit: = {
val p = new Person("张三",Male)
println(p)
}
}