文章目录
概述:
- isInstanceOf:判断对象是否为指定类的对象
- asInstanceOf:将对象转换为指定类型
格式:
判断对象是否为指定类型:
var trueOrFalse: Boolean= 对象.isInstanceOf[类型]
将对象转换为指定类型:
val 变量 = 对象.asInstanceOf[类型]
案例
需求:
- 定义一个Person类
- 定义一个Student类继承自Person类,该类有一个sayHello()方法
- 创建一个Student类对象,并指定它的类型为Person类型
- 判断该对象是否为Student类型,如果是将其转换为Studen类型,并调用sayHello()方法
参考代码:
object demo {
class Person
class Student extends Person {
def sayHello(): Unit = println("Hello,Student")
}
def main(args: Array[String]): Unit = {
var p:Person=new Student;
//判断该对象是否为Student
if (p.isInstanceOf[Student]){
//是,转换为Student
val s=p.asInstanceOf[Student];
//调用sayHello()
s.sayHello();
}
}
}
getClass和classOf
概述:因为isInstanceOf只能判断对象是否为指定类以及其子类的对象,而不能精确的判断出:对象就是指定类的对象。如果要求精确地判断出对象的类型就是指定的数据类型,那么久只能使用getClass和classOf来实现。
用法:
- p.getClass可以精确获取对象的类型
- classOf[类名]可以精确获取数据类型
- 使用==操作符可以直接比较类型