scala類型判斷關鍵字:isInstanceOf和asInstanceOf,getClass和classOf

isInstanceOf和asInstanceOf

isInstanceOf:isInstanceOf用於判斷對象是否是某類或者某類子類的實例
asInstanceOf:相當於java的強制類型轉換

class Person {
    var name: String = ""
    var age: Int = 0
    
    def this(name: String, age: Int) = {
        this()
        this.name = name
        this.age = age
    }
}

class Student extends Person {
}


// isInstanceOf用於判斷對象是否是某類或者某類子類的實例
val student = new Student()

println(student.isInstanceOf[Person]) // true
println(student.isInstanceOf[Student]) // true

val person = new Person()
println(person.isInstanceOf[Person]) // true
println(person.isInstanceOf[Student]) // false

// asInstanceOf相當於java的強制類型轉換
// val num: Int = 10.0 // 類型錯誤
val num: Int = 10.0.asInstanceOf[Int]
println(num.isInstanceOf[Int])

getClass和classOf

  • p.getClass可以精確獲取對象的類型
  • classOf[x]可以精確獲取類型
  • 使用==操作符可以直接比較類型
 val student = new Student()
 
 println(student.getClass)
 println(student.getClass == classOf[Student]) // true
 println(student.getClass == classOf[Person]) // false
 
 //        class Student
 //        true
 //        false
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章