generics - 协变(输出)和泛型类型 kotlin
问题描述
在 Java 中,我可以这样做:
interface BaseInterface {}
interface ExtendsInterface extends BaseInterface {}
public interface ProblemInterface<E extends BaseInterface> {
void method(E baseInterface);
}
class Main {
public static void main (String [ ] args) {
ProblemInterface<ExtendsInterface> problemInterfaceExtendsInterface = new ProblemInterface<ExtendsInterface>() {
@Override
public void method(ExtendsInterface baseInterface) {}
};
ProblemInterface<? extends BaseInterface> problemInterfaceBaseInterface = problemInterfaceExtendsInterface;
}
}
在科特林:
interface BaseInterface
interface ExtendsInterface: BaseInterface
interface ProblemInterface<out E : BaseInterface> {
fun method(baseInterface: E)
}
val problemInterfaceExtendsInterface: ProblemInterface<ExtendsInterface> = object : ProblemInterface<ExtendsInterface> {
override fun method(baseInterface: ExtendsInterface) {}
}
val problemInterfaceBaseInterface: ProblemInterface<BaseInterface> = problemInterfaceExtendsInterface
但问题是:使用协变(出)但类型参数出现在“入”位置
有什么办法解决这个问题吗?如何在 Java/Kotlin 中使用相同的代码?谢谢
解决方案
推荐阅读
- python - 如何上传文件或丢失的目录
- google-apps-script - 在多个共享的 google word 文档中自动添加某些文本和表格
- javascript - Lodash 设置整数路径奇怪的行为
- java - Jenetics:如何解释并得到染色体的结果?
- c - 如何在 C 编程中生成具有特定区域附加特定数字的矩阵?
- azure-cognitive-search - ComplexType:根据内部数据分析进行查询
- android - 更新通知操作的正确方法
- python - 我应该如何为 CBC 代码实现初始化向量?
- python - 每次我需要使用它时定义一个函数python
- api - 如果删除过滤视图没有要删除的内容,则调用创建过滤视图函数