当前位置: 首页 > 知识库问答 >
问题:

泛型接口中的Out projected type禁止使用带有泛型参数的metod

晋鹤轩
2023-03-14

我开始使用Kotlin,我定义了如下界面:

   interface AAdapter<VH : RecyclerView.ViewHolder> {

        fun onCreateAViewHolder(parent: ViewGroup): VH

        fun onBindAViewHolder(v: VH, position: Int)
    }

当我尝试在代码上使用它时:

class Klasa (
        private val adapter: AAdapter<*>
) {

   fun doSth(){
      //... 
      val vh = this.adapter.onCreateAViewHolder(parent)
      //on below line I get error
      adapter.onBindAViewHolder(v, position)
     //...
  }

}

我得到了一个错误,投影类型是“A适配器

我想在定义中加上“in”或“out”,但我感到困惑。

如何允许它。

共有1个答案

云捷
2023-03-14

替换AAdapter

class Klasa (
        private val adapter: AAdapter<RecyclerView.ViewHolder>
) {
 // ...

因为您已经声明了AAdapter有一个类型参数VH,其类型是RecyclView. ViewHolder的任何子类。并且在类Klasa中,您有一个AAdapter的实例,它具有任何类型的类型参数。

 类似资料:
  • 问题内容: 在C#中,我实际上可以这样做: 但是由于某种原因,我无法使其在Java中工作。 我要做的是在超类上创建一个静态方法,以便可以将子类转换为XML。 问题答案: 称为: 或更明确地: 更令人困惑的是,您可以拥有既构造泛型类型又具有泛型参数的构造函数。不记得该语法,也从未在愤怒中使用过它(无论如何,最好还是使用静态创建方法)。 强制转换是不安全的,并且您不能编写T.class。因此,将T.c

  • 编译时,此代码将产生以下+错误: 问题是访问中的类型T与列表中的T不相同。如何修复此编译问题?

  • 我在TypeScript 2.4中遇到一个错误。2在泛型类上,该泛型类的约束与不太严格的接口不兼容。我得到以下错误: TS/组件/Schedule.ts(37,13):错误TS2322:键入{人周末视图: PlanItemschduleView; project...属性“人员周末视图”与索引签名不兼容。类型PlanItemschduleView不能分配给类型IPlanItemschduleVie

  • 为什么叫“泛型模型”,请查看一些基本概念 Keras的泛型模型为Model,即广义的拥有输入和输出的模型,我们使用Model来初始化一个泛型模型 from keras.models import Model from keras.layers import Input, Dense a = Input(shape=(32,)) b = Dense(32)(a) model = Model(inp

  • 问题内容: 您如何进行这项工作: 不做 编辑 为什么这不起作用? 我正在将编译器消息标记为错误。 问题答案: Reimeus已经指出,您在编辑中要求的内容是不可能的。我只想扩展一下原因。 人们会认为您可以使用以下内容: 实际上,这就是我第一次看到这篇文章时想到的。但这实际上会导致编译器错误: 类型变量不能跟其他界限 为了帮助我解释原因,我想引用Victor Rudometov在OracleBlog

  • 我在我的一个实用程序类中有一个方法,它接受一个集合和一个类对象,并返回一个Iterable实例,该实例可以遍历作为指定类实例的集合的所有成员。其签名为: 这对于大多数用例都非常有效,但现在我需要将其与泛型类