如何从Kotlin覆盖Java中的方法,其中参数类型为SomeType <*>?但是需要分配给SomeType <String>吗?

时间:2019-10-30 15:26:33

标签: android generics kotlin

class SomeClass: ThirdPartyBaseClass {
    private var someValue: AnotherType<String>? = null

    override fun initialize(param1: AType?, param2: AnotherType<*>?) {
        this.someValue = param2
    }
}

当我从override ThirdPartyBaseClass初始化方法时,Android Studio自动完成功能会在上面添加签名。 AnotherType基本上是通用类型(来自lib的第三部分),'T'必须为'String',我才能使用它。问题是我无法将param2分配给someValue,因为出现错误:

  

type mismatch: required AnotherType<String>? found: AnotherType<*>?.

解决此问题的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

您必须使用类型转换来实现此目的。试试:

override fun initialize(param1: AType?, param2: AnotherType<*>?) {
    this.someValue = param2 as AnotherType<String>?
}