Juicio tipo Scala

Visión de conjunto:

  • isInstanceOf: determina si el objeto es un objeto de la clase especificada
  • asInstanceOf: convierte el objeto al tipo especificado

formato:

判断对象是否为指定类型:
var trueOrFalse: Boolean= 对象.isInstanceOf[类型]

将对象转换为指定类型:
val 变量 = 对象.asInstanceOf[类型]

Caso de estudio

demanda:

  • Definir una clase de persona
  • Definir una clase Student heredada de la clase Person, que tiene un método sayHello ()
  • Cree un objeto de clase de estudiante y especifique su tipo como el tipo de persona
  • Determine si el objeto es del tipo Student, si se convierte al tipo Student, y llame al método sayHello ()

Código de referencia:

object demo {
    
    
  class Person
  class Student extends Person {
    
    
    def sayHello(): Unit = println("Hello,Student")
  }

  def main(args: Array[String]): Unit = {
    
    
    var p:Person=new Student;
    //判断该对象是否为Student
    if (p.isInstanceOf[Student]){
    
    
      //是,转换为Student
      val s=p.asInstanceOf[Student];
      //调用sayHello()
      s.sayHello();
    }
  }
}

getClass 和 classOf

Descripción general: debido a que isInstanceOf solo puede determinar si un objeto es un objeto de una clase específica y sus subclases, no puede determinar con precisión que un objeto es un objeto de una clase específica. Si es necesario determinar con precisión que el tipo de objeto es el tipo de datos especificado, solo se puede lograr utilizando getClass y classOf durante mucho tiempo.

uso:

  • p.getClass puede obtener con precisión el tipo de objeto
  • classOf [nombre de clase] puede obtener con precisión el tipo de datos
  • Utilice el operador == para comparar directamente los tipos

Supongo que te gusta

Origin blog.csdn.net/zh2475855601/article/details/114679184
Recomendado
Clasificación