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)
  • 相关阅读:
    java数组
    java 常用类
    java 集合(一)
    mysql相关操作(一)
    记录java BigDecimal
    hxg-yw
    一个困惑我好久的问题
    关于重载和重写的一些小知识
    几个常用的HTTP状态码
    死锁产生的原因和条件简述
  • 原文地址:https://www.cnblogs.com/zzq-include/p/8626574.html
Copyright © 2011-2022 走看看