- 说明
(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)
} }
```scala
object HelloWorld {
def main(args: Array[String]): Unit = {
// 1. 类型的检测和转换
val student: Student17 = new Student17("alice", 18)
student.study() // student study
student.sayHi() // hi from student alice
println("=================")
val person: Person17 = new Student17("bob", 20)
person.sayHi() // hi from student bob
println("=================")
// 类型判断, 下面都是true
println("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")
}
}