首页 > 解决方案 > 如何在 Kotlin 中返回 T?

问题描述

我想在函数中返回 T 。

我有一个接口类IRepository.kt

interface IRepository
{
    fun <T>Save(model:T)
    fun <T>Delete(model:T)
    fun <T>Get(id:Long):T
}

我想在Repolmpl.kt

class Repolmpl:IRepository
{

  override fun <T>Delete(model:T)
  {
      println("$model  : Save}")
  }

  override fun <T>Get(id:Long):T
  {
      return T //ERROR here I want to return T...
  }

  override fun <T> Save(model: T) 
  {
      println("$model : Delete")
  }
}

我在网上看到了一些类似的问题,但我找不到正确的解决方案。

标签: kotlin

解决方案


泛型类型T基本上只是一个模板。您不能返回它,但必须先用实际类型替换它。使接口本身通用,而不是其方法。实施时,指定T

interface IRepository<T> {
    fun save(model: T)
    fun delete(model: T)
    fun get(id: Long): T
}

class Repolmpl: IRepository<String>
{
    override fun delete(model: String) {}
    override fun get(id: Long): String {}
    override fun save(model: String) {}
}

推荐阅读