- 说明
(1)obj.isInstanceOf[T]:判断obj是不是T类型
(2)obj.asInstanceOf[T]:将obj强转成T类型, 无法转换会报错
(3)classOf获取对象的类名
- 案例实操 ```scala class Person { }
object Person { def main(args: Array[String]): Unit = { val person = new Person
//判断对象是否为某个类型的实例val bool: Boolean = person.isInstanceOf[Person]if (bool) {//将对象转换为某个类型的实例val p1: Person = person.asInstanceOf[Person]println(p1)}//获取类的信息val pClass: Class[Person] = classOf[Person]println(pClass)
} }
```scalaobject HelloWorld {def main(args: Array[String]): Unit = {// 1. 类型的检测和转换val student: Student17 = new Student17("alice", 18)student.study() // student studystudent.sayHi() // hi from student aliceprintln("=================")val person: Person17 = new Student17("bob", 20)person.sayHi() // hi from student bobprintln("=================")// 类型判断, 下面都是trueprintln("student is Student17: " + student.isInstanceOf[Student17])println("student is Person17: " + student.isInstanceOf[Person17])println("person is Person17: " + person.isInstanceOf[Person17])println("person is Student: " + person.isInstanceOf[Student17])val person2: Person17 = new Person17("cary", 35)println("person2 is Student17: " + person2.isInstanceOf[Student17]) // false// 类型转换if (person.isInstanceOf[Student17]){val newStudent = person.asInstanceOf[Student17]newStudent.study() // student study}println(classOf[Student17]) //class com.jdxia.chapter01.Student17}}class Person17(val name: String, val age: Int){def sayHi(): Unit = {println("hi from person " + name)}}class Student17(name: String, age: Int) extends Person17(name, age){override def sayHi(): Unit = {println("hi from student " + name)}def study(): Unit = {println("student study")}}
