scala class和case class的区别
2018-01-12 00:00
155 查看
scala中的case class和普通class的区别如下:
1、初始化的时候可以不用new,当然你也可以加上,普通类一定需要加new;
2、toString的实现更漂亮;
3、默认实现了equals 和hashCode;
4、默认是可以序列化的,也就是实现了Serializable ;
5、自动从scala.Product中继承一些函数;
6、case class构造函数的参数是public级别的,我们可以直接访问;
7、支持模式匹配;
1、初始化的时候可以不用new,当然你也可以加上,普通类一定需要加new;
scala> case class Iteblog(name:String) defined class Iteblog scala> val iteblog = Iteblog("iteblog_hadoop") iteblog: Iteblog = Iteblog(iteblog_hadoop) scala> val iteblog = new Iteblog("iteblog_hadoop") iteblog: Iteblog = Iteblog(iteblog_hadoop)
2、toString的实现更漂亮;
scala> iteblog res5: Iteblog = Iteblog(iteblog_hadoop)
3、默认实现了equals 和hashCode;
scala> val iteblog2 = Iteblog("iteblog_hadoop") iteblog2: Iteblog = Iteblog(iteblog_hadoop) scala> iteblog == iteblog2 res6: Boolean = true scala> iteblog.hashCode res7: Int = 57880342
4、默认是可以序列化的,也就是实现了Serializable ;
scala> class A defined class A scala> import java.io._ import java.io._ scala> val bos = new ByteArrayOutputStream bos: java.io.ByteArrayOutputStream = scala> val oos = new ObjectOutputStream(bos) oos: java.io.ObjectOutputStream = java.io.ObjectOutputStream@4c257aef scala> oos.writeObject(iteblog) scala> val a = new A a: A = $iwC$$iwC$A@71687b10 scala> oos.writeObject(a) java.io.NotSerializableException: $iwC$$iwC$A
5、自动从scala.Product中继承一些函数;
6、case class构造函数的参数是public级别的,我们可以直接访问;
scala> iteblog.name res11: String = iteblog_hadoop
7、支持模式匹配;
scala> case class A( a: Int ) defined class A scala> case class B( b: String ) defined class B scala> def classMath( x: AnyRef ): Unit = { | x match { | case A(a) => println( "A:" + a ) | case B(b) => println( "B:" + b ) | case A => println( A.apply(100) ) | } | } classMath: (x: AnyRef)Unit scala> val a = A( 1 ) a: A = A(1) scala> val b = B( "b" ) b: B = B(b) scala> classMath( a ) A:1 scala> classMath( b ) B:b
相关文章推荐
- Scala class和case class的区别
- Scala class和case class的区别
- Scala class和case class的区别
- Scala class与Case class的区别
- Scala class和case class的区别
- Scala class 和 case class 的区别
- scala case class与class区别
- 云星数据---Scala实战系列(精品版)】:Scala入门教程040-Scala实战源码-Scala Case Class 02
- Scala中class和object的区别
- Scala伴生类Class和伴生对象Object的区别
- Scala模式匹配,case 字符串,case 匹配类型,case 匹配数组,case 匹配List,case 匹配元组,case匹配case class和case object
- class与object的区别和使用方法[scala]
- Scala中object、class与trait的区别
- Programming in Scala (Second Edition) 读书笔记15 case class and pattern matching
- 模式匹配高级实战:嵌套的Case class之Scala学习笔记-21
- Scala学习笔记20【Scala 模式匹配之case class实战】
- scala case class
- scala进阶22-case class消息传递
- scala class和object,trait的区别
- 云星数据---Scala实战系列(精品版)】:Scala入门教程039-Scala实战源码-Scala Case Class 01