scala类型判断关键字:isInstanceOf和asInstanceOf,getClass和classOf

isInstanceOf和asInstanceOf

isInstanceOf:isInstanceOf用于判断对象是否是某类或者某类子类的实例
asInstanceOf:相当于java的强制类型转换

class Person {
    var name: String = ""
    var age: Int = 0
    
    def this(name: String, age: Int) = {
        this()
        this.name = name
        this.age = age
    }
}

class Student extends Person {
}


// isInstanceOf用于判断对象是否是某类或者某类子类的实例
val student = new Student()

println(student.isInstanceOf[Person]) // true
println(student.isInstanceOf[Student]) // true

val person = new Person()
println(person.isInstanceOf[Person]) // true
println(person.isInstanceOf[Student]) // false

// asInstanceOf相当于java的强制类型转换
// val num: Int = 10.0 // 类型错误
val num: Int = 10.0.asInstanceOf[Int]
println(num.isInstanceOf[Int])

getClass和classOf

  • p.getClass可以精确获取对象的类型
  • classOf[x]可以精确获取类型
  • 使用==操作符可以直接比较类型
 val student = new Student()
 
 println(student.getClass)
 println(student.getClass == classOf[Student]) // true
 println(student.getClass == classOf[Person]) // false
 
 //        class Student
 //        true
 //        false
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章