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