Verificación de tipos y conversión en scala

En scala, para probar si un objeto pertenece a una clase determinada, puede utilizar el método isInstanceOf. Utilice el método asInstanceOf para convertir una referencia en una referencia de subclase, que es equivalente a la conversión de tipo coercitivo de Java. classOf se utiliza para obtener el nombre de clase del objeto.
De hecho, el mayor valor de la verificación y conversión de tipos es que puede determinar el tipo de objeto entrante y luego convertirlo en el objeto de subclase correspondiente .

Inserte la descripción de la imagen aquí

object typeConverse03 {
    
    
  def main(args: Array[String]): Unit = {
    
    
     val animal = new Animal
     val dog = new Dog
     val cat = new Cat
     testEat(dog) //向上转型 (多态)
     testEat(cat)
     testEat(animal)
     println("**************")
     println(classOf[Animal])
  }

  def testEat(a : Animal): Unit ={
    
    
    if(a.isInstanceOf[Dog]){
    
    
      println(a.asInstanceOf[Dog])
      // 这里需要注意a.asInstanceOf[Dog]对a的类型没有任何变化,而是返回的是Dog
      a.asInstanceOf[Dog].eat()
    }
    else if(a.isInstanceOf[Cat]){
    
    
      a.asInstanceOf[Cat].eat()
    }else{
    
    
      a.eat()
    }
  }
}

class Animal{
    
    
  var name = "tom"
  def eat(): Unit ={
    
    
    println(name + " feel very hungry")
  }
}
class Dog extends Animal{
    
    
  override def eat(): Unit = {
    
    
    println(name + " like eat bone")
  }
}

class Cat extends Animal{
    
    
  override def eat(): Unit = {
    
    
    println(name + " like eat fish")
  }
}

resultado de la operación

com.mo.chapter07.myextends.Dog@1888ff2c
tom like eat bone
tom like eat fish
tom feel very hungry
**************
class com.mo.chapter07.myextends.Animal

Supongo que te gusta

Origin blog.csdn.net/weixin_44080445/article/details/108908120
Recomendado
Clasificación