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