Scala:case class
Scala:case class
1.Scala中class、object、case class、case object区别
原文:Scala中class、object、case class、case object区别
- class 类似Java中的class;
- object Scala不能定义静态成员,用定义单例对象代之;
- case class被称为样例类,是一种特殊的类,常被用于模式匹配。
1.1 class 和 object 关系
- 1.单例对象不能带参数,类可以
- 2.对象可以和类名一样时,object被称为伴生对象,class被称为伴生类;
- 3.类和伴生对象可以相互访问其私有属性,但是它们必须在一个源文件当中;
- 4.类只会被编译,不会被执行。要执行,必须在Object中。
1.2 case class 与 class 区别
- 1.初始化的时候可以不用new,也可以加上,但是普通类必须加new;
- 2.默认实现了equals、hashCode方法;
- 3.默认是可以序列化的,实现了Serializable;
- 4.自动从scala.Product中继承一些函数;
- 5.case class 构造函数参数是public的,我们可以直接访问;
- 6.case class默认情况下不能修改属性值;
- 7.case class最重要的功能,支持模式匹配,这也是定义case class的重要原因。
1.3 case class 和 case object 区别
- 1.类中有参和无参,当类有参数的时候,用case class ,当类没有参数的时候那么用case object。
1.4 当类被声明为case class的时,scala会做的事情
- 1.构造器中的参数如果不被声明为var的话,它默认的话是val类型的,但一般不推荐将构造器中的参数声明为var
- 2.自动创建伴生对象,同时在里面给我们实现子apply方法,使得我们在使用的时候可以不直接显示地new对象
- 3.伴生对象中同样会帮我们实现unapply方法,从而可以将case class应用于模式匹配,关于unapply方法我们在后面的“提取器”那一节会重点讲解
- 4.实现自己的toString、hashCode、copy、equals方法
- 除此之此,case class与其它普通的scala类没有区别
case class Iteblog(name:String)
object TestScala {
def main(args: Array[String]): Unit = {
val iteblog = new Iteblog("iteblog_hadoop")
val iteblog2 = Iteblog("iteblog_hadoop")
println(iteblog == iteblog2)
println(iteblog.hashCode)
println(iteblog2.hashCode)
}
}
Scala:case class的更多相关文章
- Scala: Case classes
Case classes are like regular classes with a few key differences which we will go over. Case classes ...
- 学习Scala: 初学者应该了解的知识
Scala开发参照清单 这里列出在开发一个Scala工程中需要参照的资料. 官网网站 http://www.scala-lang.org/ 文档网站 http://docs.scala-lang.or ...
- Java,Scala:JDBCUtil,MySqlUtil,PhoenixJDBC
Java,Scala:JDBCUtil,MySqlUtil,PhoenixJDBC pom.xml添加依赖 Java:方式一(亲测实用) 方式二:Scala 方式三:Java PhoenixJDBCU ...
- 客户端,Scala:Spark查询Phoenix
客户端,Scala:Spark查询Phoenix 1.pom.xml 2.配置文件 2.1config.properties 2.2MyConfig 3.entity实体(与phoenix中的tabl ...
- android switch语句报错:case expressions must be constant expressions
今天无意中碰见了 case expressions must be constant expressions 的问题 写了一个 switch(item.getItemId()) { case R. ...
- Scala:使用Sublime开发Scala
Scala:使用Sublime开发Scala 第一步:[Tools][Build System][New Build System] 第二步:在打开的新文件中输入: { //"cmd&quo ...
- SQL Server -- 回忆笔记(四):case函数,索引,子查询,分页查询,视图,存储过程
SQL Server知识点回忆篇(四):case函数,索引,子查询,分页查询,视图,存储过程 1. CASE函数(相当于C#中的Switch) then '未成年人' else '成年人' end f ...
- SQL进阶1:case表达式的用法示例
一:case表达式的用法 1.SQL中的case表达式的作用是用来对"某个变量"进行某种转化,通常在select字句中使用,举个例子: 不能看出,case表达式很像我们的if el ...
- ORACLE PL/SQL 实例精解之第五章 条件控制:CASE语句
5.1 CASE语句 1. CASE语句具有如下结构 CASE SELECTOR WHEN EXPRESSION 1 THEN STATEMENT 1; WHEN EXPRESSSION 2 THEN ...
随机推荐
- MQ关于实现最终一致性分布式事务原理解析
本文讲述阿里云官方文档中关于通过MQ实现分布式事务最终一致性原理 概念介绍 事务消息:消息队列 MQ 提供类似 X/Open XA 的分布式事务功能,通过消息队列 MQ 事务消息能达到分布式事务的最终 ...
- JVM内存设置多大合适?Xmx和Xmn如何设置?
JVM内存设置多大合适?Xmx和Xmn如何设置? 问题:新上线一个java服务,或者是RPC或者是WEB站点, 内存的设置该怎么设置呢?设置成多大比较合适,既不浪费内存,又不影响性能呢? 分析:依 ...
- Java异常体系概述
Java的异常体系结构 Java异常体系的根类是 Throwable, 所以当写在java代码中写throw抛出异常时,后面跟的对象必然是Throwable或其子类的对象. 其中Exception异常 ...
- post请求下载文件,获取Content-Disposition文件名
1.post下载文件代码,doload方法 import request from "../../src/utils/request"; import { API } from & ...
- 风炫安全WEB安全学习第二十二节课 DOM型XSS讲解
风炫安全WEB安全学习第二十二节课 DOM型XSS讲解 Dom型XSS演示 通过Javascript,可以重构整个HTML文档,你可以添加.移除.改变或重排页面上的项目 要改变页面的某个东西,Java ...
- 神经网络中的降维和升维方法 (tensorflow & pytorch)
大名鼎鼎的UNet和我们经常看到的编解码器模型,他们的模型都是先将数据下采样,也称为特征提取,然后再将下采样后的特征恢复回原来的维度.这个特征提取的过程我们称为"下采样",这个恢复 ...
- 第1章 无所不在的JavaScript
traceur转码(编译)器 Babel转码(编译)器 JavaScript API 的核心组成部分:ECMASCcript, DOM, BOM 桌面应用:electron 移动应用:Apache C ...
- JAVA_基础反射创建运行时类的对象
通过反射去创建对应的运行时类的对象 newInstance():调用此方法,创建对应的运行时类的对象.内部调用的是空参的构造器. 要想此方法正常的创建运行时类的对象,要求: 1.运行时类必须提供空参构 ...
- (二)数据源处理6-excel数据转换实战(下)
将结果的所有数据整理如下: {'api_case_01': [{'测试用例编号': 'api_case_01', '测试用例名称': '获取access_token接口测试', '用例执行': '是' ...
- mysql中的kill
show processlist;查看id, 然后 kill id ; 就行了.