Kotlin

Kotlin 通配符泛型

2020-08-12  本文已影响0人  技术客栈

简述

在日常开发当中我们经常会用到泛型,下面就Kotlin 代码泛型的使用做出记录。主要有如下两部分:

基本使用

  1. 泛型类
//kotlin 
class ResultCallBack <T>{
}

//java
public class ResultCallBack<T>{
}

  1. 泛型方法
//kotlin
fun <T>onSuccess(stateCode: Int, body:T){   
 }

//java
public <T> onSuccess(int stateCode, T body){
}
  1. 泛型接口
//kotlin
interface ResultCallBack <T>{
}

// java
public interface ResultCallBack<T>{
}

泛型约束

在泛型约束主要分为 上界约束和下界约束。下面我们逐一举例

上界通配符

上界通配符通常我们使用<? extends T> 来表示。即泛型参数类型必须是T或者T的子类,用来确定类型的上限。

// java
   public void systemOut(List<? extends T> list){
    
    }
// Kotlin  [ out T  等价于 ? extends T ] 
    fun systemOut(list : List<out T> ){
        
    }

下界通配符

上界通配符通常我们使用<? super T> 来表示。即可以表示所有T的父类(包括T),用来确定类型的上限。

// java
  public void systemIn(List<? super T> list){
    
  }
// kotlin
// kotlin [  in T  等价于  ? super T ]  还有 [ *  等价于 ? ]
    fun systemIn(list: MutableList<in T>) {
      
    }

泛型擦除

泛型声明执行的类型安全检测仅在编译期进行, 运行时实例不保留关于泛型类型的任何信息。

    // kotlin [ Any 对应 Java Object 任意类型]
    fun buildRequest(param:Any){
        // 第一种具体类型
        if (param is Int){
            
        }
        
        // 第二种Array 使用 * 通配符
        if (param is Array<*>){
            
        }
    }

在实际的使用过程遇到的问题,做出记录方便以后查找和加深记忆。

上一篇下一篇

猜你喜欢

热点阅读