zoukankan      html  css  js  c++  java
  • scala-隐式转换

    //隐式转换示例
    
    class Persion(val name: String) {
    
    }
    
    class Worker(name: String) extends Persion(name) {
    
    }
    
    class Dog(val name: String) {
    
    }
    
    
    def test1[T <% Persion](p: T): Unit = {
    }
    
    test1(new Dog("123"))
    
    implicit def method1(obj: Object): Persion = {//只要定义了隐式转换函数,那么view bound([T <% Persion])泛型就可以接收指定类型
      if (obj.isInstanceOf[Dog]) {
        val d = obj.asInstanceOf[Dog];
        new Persion(d.name);
      } else Nil
    }

     隐式转换发生的3种情况:

    1:在调用函数时参数类型不匹配;

    2:在对象调用不存在方法的时候;

    3:在调用类型对象的方法但参数不匹配的时候;

    隐式转换的搜索范围:

    1:在当前的scala上下文范围内搜索;

    2:在目标类或者原类的伴生对象中搜索;

    //隐式参数应用
    
    def test(name: Int)(implicit age: Int): Unit = {
      println(name + "  -  " + age)
    }
    
    implicit val age = 16
    
    test(99)
  • 相关阅读:
    HeidiSQL
    PostgreSQL
    MariaDB
    NLog
    0 vs null
    忘带手机的那么一天
    江城子·己亥年戊辰月丁丑日话凄凉
    单体 VS 微服务
    java面向对象(四)之重写、重载
    java面向对象(三)之抽象类,接口,向上转型
  • 原文地址:https://www.cnblogs.com/zzq-include/p/8626574.html
Copyright © 2011-2022 走看看