【发布时间】:2017-07-07 09:54:52
【问题描述】:
我正在尝试在其泛型参数中交叉引用类型。 在java中,我有这个:
public interface Group<C extends Child> {
List<C> getChildren();
}
public interface Child<G extends Group> {
G getParent();
}
class MyGroup implements Group<MyChild> {
@Override
public List<MyChild> getChildren() {
return null;
}
}
class MyChild implements Child<MyGroup> {
@Override
public MyGroup getParent() {
return null;
}
}
使用 AndroidStudio 的“转换为 Kotlin”功能会导致:
interface Group<C : Child<*>> {
val children: List<C>
}
interface Child<G : Group<*>> {
val parent: G
}
internal inner class MyGroup : Group<MyChild> {
override val children: List<MyChild>?
get() = null
}
internal inner class MyChild : Child<MyGroup> {
override val parent: MyGroup?
get() = null
}
抛出:违反了有限界限制。
有什么方法可以在 kotlin 中编写这样的代码吗?
【问题讨论】:
-
@zsmb13 可能是重复的。但答案不是完美的方法。
标签: java android-studio kotlin