泛型类的 Autowire 子类

萨曼尼姆

在 Spring Boot 2 中,使用 Kotlin,我试图创建一系列组件,这些组件都扩展了泛型类,但为其提供了特定类型:

abstract class Super<in T: SomeType> {
  abstract fun someMethod(t: T): Boolean
}

// AnotherType and OneMoreType extend SomeType
@Component
class Sub1 : Super<AnotherType> {
  override fun someMethod(t: AnotherType) = true
}

@Component
class Sub2 : Super<OneMoreType> {
  override fun someMethod(t: OneMoreType) = true
}

这一切都编译得很好,但是我想为另一个组件收集所有这些:

@Component
class MyService(
  private val subs: List<Super<SomeType>>
)

这导致no beans异常。

我错过了什么才能找到这些豆子?

萨曼尼姆

我找到的一个解决方案是接受一个星形投影Super<*>,然后在我访问它时投射它:

@Component
class MyService(
  private val subs: List<Super<*>>
) {
  @Suppress("UNCHECKED_CAST")
  fun getSub(): List<Super<SomeType>>? = subs[0] as List<Super<SomeType>>
}

这有效,但我不喜欢它,因为我必须进行未经检查的演员表。我也无法进行检查转换,因为由于擦除,我无法确定泛型类型(如 with is Super<SomeType>)。

既然Super有界限,SomeType它并不是特别危险,只是丑陋。

建议或更好的解决方案将不胜感激。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

访问类型是泛型类的子类型?

来自分类Dev

Java泛型-类本身的子类?

来自分类Dev

泛型类和子类的数组

来自分类Dev

检查类是否是特定泛型的子类

来自分类Dev

使用类泛型构造的子类型

来自分类Dev

泛型类的子类型的隐式类

来自分类Dev

泛型类型子类

来自分类Dev

Swift泛型类类型既是子类又符合协议

来自分类Dev

如何将子类分配给非泛型类中的泛型字段

来自分类Dev

为什么不能将Objects数组转换为泛型类的泛型子类的数组?

来自分类Dev

泛型和继承:将泛型与基类及其子类一起使用

来自分类Dev

如何通过非泛型的子类从父类正确访问泛型方法?

来自分类Dev

具有子类泛型的子类

来自分类Dev

用子类创建泛型

来自分类Dev

子类化和泛型

来自分类Dev

实现泛型的自定义类的数组不允许自定义类具有子类的泛型

来自分类Dev

当基类在C#中是泛型时,如何将子类转换为基类

来自分类Dev

根据Java中的子类类型定义父类方法的泛型类型

来自分类Dev

使用超类作为泛型子类型中的类型参数

来自分类Dev

超类的Java泛型,但并非所有子类都希望定义类型参数

来自分类Dev

如何在Swift中使用泛型对另一个类进行子类化?

来自分类Dev

如何确定泛型超类的特定子类的ACTUAL返回类型?

来自分类Dev

想要使用带有子类“ this”的泛型来调用基类

来自分类Dev

如何在我子类化的类中的Swift中返回泛型类型

来自分类Dev

与基类和子类有关的Java泛型“不适用于自变量”

来自分类Dev

关于Java泛型和子类

来自分类Dev

在Realm中存储具体的泛型子类

来自分类Dev

泛型Java通配符和子类型

来自分类Dev

如何强制泛型中的子类/协议

Related 相关文章

热门标签

归档