package level02
object Class03 {
// 判断类和对象的关系?亲子鉴定?
// 方式1:对象.getClass() // 找爹
// 方式2:对象.isInstanceOf[类] // DNA对比
class Student() {}
class Teacher() {}
def main(args: Array[String]): Unit = {
val age: Int = 1
val stu = new Student()
// stu 是对象名
### // Student是类名
// stu是Student类的实例。
// 返回类名
println(stu.getClass) // class level02.Class03$Student
println(age.getClass) // int
// 注意:[],结果是boolean值
println(stu.isInstanceOf[Student]) // true
println(stu.isInstanceOf[Teacher]) // false
}
}
实操注意事项安全校验 |
-
自定义类与基本类型的差异:
- 自定义类(如
Student)的getClass()返回包含包路径的类名,基本类型(如Int)直接返回类型关键字。
- 自定义类(如
-
isInstanceOf的精确性:- 仅当对象确实是目标类的实例时返回
true,子类实例对父类的判断也会返回true(继承关系下),需注意继承场景的校验逻辑。
- 仅当对象确实是目标类的实例时返回