Scala 类型检查和转换
(1)obj.isInstanceOf[T]:判断 obj 是不是 T 类型。
(2)obj.asInstanceOf[T]:将 obj 强转成 T 类型。
(3)classOf 获取对象的类名。
1 package chapter06
2
3 object Test17_Extends {
4 def main(args: Array[String]): Unit = {
5 // 1. 类型的检测和转换
6 val student: Student17 = new Student17("alice", 18)
7 student.study()
8 student.sayHi()
9 val person: Person17 = new Student17("bob", 20)
10 person.sayHi()
11
12 // 类型判断
13 println("student is Student17: " + student.isInstanceOf[Student17])
14 println("student is Person17: " + student.isInstanceOf[Person17])
15 println("person is Person17: " + person.isInstanceOf[Person17])
16 println("person is Student: " + person.isInstanceOf[Student17])
17
18 val person2: Person17 = new Person17("cary", 35)
19 println("person2 is Student17: " + person2.isInstanceOf[Student17])
20
21 // 类型转换
22 if (person.isInstanceOf[Student17]){
23 val newStudent = person.asInstanceOf[Student17]
24 newStudent.study()
25 }
26
27 println(classOf[Student17])
28
29 // 2. 测试枚举类
30 println(WorkDay.MONDAY)
31 }
32 }
33
34 class Person17(val name: String, val age: Int){
35 def sayHi(): Unit = {
36 println("hi from person " + name)
37 }
38 }
39
40 class Student17(name: String, age: Int) extends Person17(name, age){
41 override def sayHi(): Unit = {
42 println("hi from student " + name)
43 }
44 def study(): Unit = {
45 println("student study")
46 }
47 }
48
49 // 定义枚举类对象
50 object WorkDay extends Enumeration {
51 val MONDAY = Value(1, "Monday")
52 val TUESDAY = Value(2, "TuesDay")
53 }
54
55 // 定义应用类对象
56 object TestApp extends App {
57 println("app start")
58
59 type MyString = String
60 val a: MyString = "abc"
61 println(a)
62 }
Scala 类型检查和转换的更多相关文章
- Java、Scala类型检查和类型转换
目录 Java 1.类型检查 2.类型转换 Scala 1.类型检查 2.类型转换 Java 1.类型检查 使用:变量 instanceof 类型 示例 String name = "zha ...
- swift--使用 is 和 as 操作符来实现类型检查和转换 / AnyObject与Any的区别
声明几个类: //动物类 class Animal{ } //陆地动物类 class terricole: Animal { } //海洋动物类 class SeaAnimals: Animal { ...
- Scala类型检查与转换
Scala类型检查与转换 isInstanceOf:检查某个对象是否属于某个给定的类. asInstanceOf:将引用转换为子类的引用. classOf:如果想测试p指向的是一个Employee对象 ...
- Scala 深入浅出实战经典 第65讲:Scala中隐式转换内幕揭秘、最佳实践及其在Spark中的应用源码解析
王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...
- Scala 隐式转换及应用
什么是隐式转换 我们经常引入第三方库,但当我们想要扩展新功能的时候通常是很不方便的,因为我们不能直接修改其代码.scala提供了隐式转换机制和隐式参数帮我们解决诸如这样的问题. Scala中的隐式转换 ...
- scala 时间格式转换(String、Long、Date)
1)scala 时间格式转换(String.Long.Date) 1.时间字符类型转Date类型 [java] view plain copy import java.text.SimpleDateF ...
- 类型检查和鸭子类型 Duck typing in computer programming is an application of the duck test 鸭子测试 鸭子类型 指示编译器将类的类型检查安排在运行时而不是编译时 type checking can be specified to occur at run time rather than compile time.
Go所提供的面向对象功能十分简洁,但却兼具了类型检查和鸭子类型两者的有点,这是何等优秀的设计啊! Duck typing in computer programming is an applicati ...
- spring类型自动转换——@InitBinder和Converter
spring有2种类型转换器,一种是propertyEditor,一种是Converter.虽然都是类型转换,但是还是有细微差别. 所以这里以一个例子的形式来分析一下这2种类型转换的使用场景和差别. ...
- C#高级编程笔记 2016年10月8日运算符和类型强制转换
1.checked和unchecked 运算符 C#提供了checked 和uncheckde 运算符.如果把一个代码块标记为checked, CLR就会执行溢出检查,如果发生溢出,就抛出overfl ...
- SpringMVC对日期类型的转换
在做web开发的时候,页面传入的都是String类型,SpringMVC可以对一些基本的类型进行转换,但是对于日期类的转换可能就需要我们配置. 1.如果查询类使我们自己写,那么在属性前面加上@Date ...
随机推荐
- Python中 r'', b'', u'', f'' 的含义
python中 r'', b'', u'', f'' 的含义 r/R:非转义的原始字符串 与普通字符相比,其他相对特殊的字符,其中可能包含转义字符,即那些,反斜杠加上对应字母,表示对应的特殊含义的 ...
- 链表--insert
分别是使用了二级指针和一级指针的两种方法,最后会按插入的顺序依次打印1,2,3,4 主要区别在于,使用二级指针,可以在main函数里直接用一个空的Node指针,而一级指针是在main函数里面先添加了一 ...
- pymysql基本语法,sql注入攻击,python操作pymysql,数据库导入导出及恢复数据---day38
1.pymysql基本语法 # ### python操作mysql import pymysql ''' # ### 1.基本语法 #(1) 创建连接 host user password datab ...
- 通过paramiko模块操作服务器
用于帮助开发者通过代码远程连接服务器,并对服务器进行操作. 如果下面运行错误了,可以看我另外一篇文章有解决办法解决paramiko连接远程服务器错误 pip3 install paramiko imp ...
- 【Azure 应用服务】App Service - 在修改应用服务计划的页面中,为什么无法查看到同一个资源组下面的其他应用服务计划(App Service Plan)呢?
问题描述 在App Service的门户上,可以通过"Change App Service Plan"来改变当前App Service所属的应用服务计划(App Service P ...
- Jupyter Notebook 遇上 NebulaGraph,可视化探索图数据库
在之前的<手把手教你用 NebulaGraph AI 全家桶跑图算法>中,除了介绍了 ngai 这个小工具之外,还提到了一件事有了 Jupyter Notebook 插件: https:/ ...
- Shopee虾皮api接口 搜索商品、评价信息 python数据采集
iDataRiver平台 https://www.idatariver.com/zh-cn/ 提供开箱即用的Shopee电商数据采集API,供用户按需调用. 接口使用详情请参考Shopee接口文档 接 ...
- Python笔记六之多进程
本文首发于公众号:Hunter后端 原文链接:Python笔记六之多进程 在 Python 里,我们使用 multiprocessing 这个模块来进行多进程的操作. multiprocessing ...
- aardio ide 字体 及设置
需求 aardio ide 只支持一个字体,英文字体肯定是Fira 但是中文字体不好,所以只好将两个字体合并上使用. 有教程.但是我发现已经有合并好的,就拿来使用吧放到fonts目录里面 代码 imp ...
- GO 语言的并发编程相关知识点简介与测试【GO 基础】
〇.什么是协程 Coroutines ? 进程和线程太常见,本文就不再赘述了,直接一起看下什么是协程.如下图,先看下协程的定位: 关于用户空间和内核空间:进程运行起来就涉及到对内存资源的管理,然而内存 ...