【发布时间】:2018-05-03 06:29:46
【问题描述】:
这是我的代码
[科特林]
internal abstract class Parent<out T, in V> constructor(
tList: List<T>,
vList: List<V>
) {
abstract fun get(): List<T>
abstract fun set(v: List<V>)
}
[ Java ] - 它继承了 kotlin 类 Parent。
final class Child extends Parent<Number, String> {
public Child(
@NotNull List<? extends Number> tList,
@NotNull List<? extends String> vList) {
super(tList, vList);
}
@NotNull @Override
public List<Number> get() {
return null;
}
@Override
public void set(@NotNull List<? extends String> v) {}
}
父类具有称为 T(out)、V(in) 的泛型
所以我认为..
Child 类的构造函数应该是..
public Child(
@NotNull List<? extends Number> tList,
@NotNull List<? super String> vList) {
super(tList, vList);
}
即第二个参数 vList 应该是
List<? super String>
因为父母的 Generic 的 V 是 'in' 但它是..
List<? extends String>
有人能解释一下吗?帮帮我!
[已编辑]...
public Child(
@NotNull List<Number> tList,
@NotNull List<String> vList) {
super(tList, vList);
}
有可能..我的问题中的代码只是从 IDE 生成的代码..
【问题讨论】:
-
为什么不同时用 Java 编写这两种语言,以免让自己头疼呢?
-
为什么不同时用 Kotlin 编写并省去自己的麻烦?