InstanceOf

  1. // 判断 p 是否为 Student3 对象的实例
  2. if (p.isInstanceOf[Student3] ) {
  3. //把 p 转换成 Student3 对象的实例
  4. s = p.asInstanceOf[Student3]
  5. }

getClass

isInstanceOf 只能判断出对象是否为指定类以及其子类的对象,
而不能精确的判断出,对象就是指定类的对象;
如果要求精确地判断出对象就是指定类的对象,
那么就只能使用 getClass 和 classOf 了;
p.getClass 可以精确地获取对象的类,classOf[XX]可以精确的获取类,
然后使用 == 操作符即可判断;

  1. package cn.itcast.extends_demo
  2. class Person4 {}
  3. class Student4 extends Person4
  4. object Student4{
  5. def main(args: Array[String]) {
  6. val p:Person4=new Student4
  7. //判断p是否为Person4类的实例
  8. println(p.isInstanceOf[Person4])//true
  9. //判断p的类型是否为Person4类
  10. println(p.getClass == classOf[Person4])//false
  11. //判断p的类型是否为Student4类
  12. println(p.getClass == classOf[Student4])//true
  13. }
  14. }