判断类和对象的关系2025.10.29

27 阅读1分钟

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
  }
}

实操注意事项安全校验 |

  1. 自定义类与基本类型的差异

    • 自定义类(如 Student)的 getClass() 返回包含包路径的类名,基本类型(如 Int)直接返回类型关键字。
  2. isInstanceOf 的精确性

    • 仅当对象确实是目标类的实例时返回 true,子类实例对父类的判断也会返回 true(继承关系下),需注意继承场景的校验逻辑。