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 }

 

posted @ 2022-01-18 19:33  靠谱杨  阅读(75)  评论(0)    收藏  举报