object TypeConvert {
def main(args: Array[String]): Unit = {
/*
* classOf 可以得到类名
* isInstanceOf 判断是否为指定类型
* asInstanceOf 类型转换
* 注意点:
* 1 需要使用isInstanceOf 判断对象是否为指定类的对象,如果是的话,则可以使用 asInstanceOf 将对象转换为指定类型;
* 2 p.isInstanceOf[XX] 判断 p 是否为 XX 对象的实例;p.asInstanceOf[XX] 把 p 转换成 XX 对象的实例
* 3 如果没有用isInstanceOf 先判断对象是否为指定类的实例,就直接用 asInstanceOf 转换,则可能会抛出异常;
* 4 对象是 null,则isInstanceOf 一定返回 false, asInstanceOf 一定返回 null;
* 5 p.asInstanceOf[XX] 并没有该改变p的类型,而是返回了一个新的类型
* */
val s = "king"
println(s.getClass.getName()) // 反射机制
var person20 = new Person200
println(classOf[Person200]) //获取类名。
var emp = new Emp100
// 将子类的引用给父类(向上转换,自动)
person20 = emp
var emp2 = person20 // 类型Person200
// 将父类的引用重新转换成子类的引用(多态),即向下转移
if (person20.isInstanceOf[Person200]){
var emp3 = person20.asInstanceOf[Emp100]
emp3.sayHello()
}
}
}
class Person200{
var name:String = _
def printName(): Unit ={
println("Person100 printName() "+ name)
}
def SayHi(): Unit ={
println("SayHi.....")
}
def sayHello(): Unit ={
println("hello nihao")
}
}
class Emp100 extends Person200{
override def printName(): Unit = {
println("Emp100 printName() "+ name)
super.printName()
SayHi()
}
}
12-Scala类型转换
最新推荐文章于 2023-03-20 08:59:17 发布