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 }