【发布时间】:2018-05-03 18:48:27
【问题描述】:
我有一个抽象 Java 类,它有一个调用子类中的方法的具体方法:
abstract class JavaSuperclass<T> {
T doSomething() {
...
return doSomethingInSubclass();
}
abstract T doSomethingInSubclass();
}
我有一个 Java 子类,其泛型类型设置为 List:
class JavaSubclass extends JavaSuperclass<List<WhateverJava>> {
List<WhateverJava> doSomethingInSubclass() {...}
}
我有一个 Kotlin 子类:
class KotlinSubclass : JavaSuperclass<List<WhateverKotlin>> {
override fun doSomethingInSubclass(): List<WhateverKotlin> {...}
}
(WhateverJava 是 Java 类,WhateverKotlin 是 Kotlin 数据类。)
然后在一个 Java 类中我同时使用两个子类。
List<WhateverJava> listFromJava = javaSubclass.doSomething();
List<WhateverKotlin> listFromKotlin = kotlinSubclass.doSomething();
调用 Java 子类的那一行编译正常,但调用 Kotlin 子类的那一行却报错:
error: incompatible types: List<capture<? extends WhateverKotlin>> cannot be converted to List<WhateverKotlin>
【问题讨论】: