在Scala中存在case class,它其实就是一个普通的class。但是它又和普通的class略有区别,如下: 1、初始化的时候可以不用new,当然你也可以加上,普通类一定需要加new;scala> case class Iteblog(name:String)defined class Iteblogscala> 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> iteblogres5: Iteblog = Iteblog(iteblog_hadoop) 3、默认实现了equals 和hashCode;scala> val iteblog2 = Iteblog("iteblog_hadoop")iteblog2: Iteblog = Iteblog(iteblog_hadoop)scala> iteblog == iteblog2res6: Boolean = truescala> iteblog.hashCoderes7: Int = 57880342 4、默认是可以序列化的,也就是实现了Serializable ;scala> class Adefined class Ascala> 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@4c257aefscala> oos.writeObject(iteblog)scala> val a = new Aa: A = $iwC$$iwC$A@71687b10scala> oos.writeObject(a)java.io.NotSerializableException: $iwC$$iwC$A 5、自动从scala.Product中继承一些函数; 6、case class构造函数的参数是public级别的,我们可以直接访问;scala> iteblog.nameres11: String = iteblog_hadoop