gpt4 book ai didi

java - Kotlin中如何从泛型继承接口(interface)?

转载 作者:太空宇宙 更新时间:2023-11-04 09:44:44 24 4
gpt4 key购买 nike

据说我有PersonImpl<Base : IPerson>泛型类,其中 IPerson是Person的接口(interface)。我正在尝试这样做

interface IPerson {
fun getName(): String
}

interface IPoliceMan : IPerson {
fun getDepartmentName(): String
}

open class PersonImpl<T: IPerson>(private val name: String) : T

然后

class PoliceMan(private val departmentName: String, name: String) : PersonImpl<IPoliceMan>(name)

所以我希望编译器说我需要实现 getDepartmentName()PoliceMan ,但是这是不可能的,因为只有类和接口(interface)可以充当父类(super class)型

所以唯一的变体是这样的

class PoliceMan(private val departmentName: String, name: String) : IPoliceMan, PersonImpl<IPoliceMan>(name)

具有重复的接口(interface)。

我可以在 Kotlin(或 Java)中拥有泛型父类(super class)型吗?

附注如果不可能,是否有任何机制可以模拟这种行为?

最佳答案

我认为您不需要泛型,只需实现接口(interface)即可。

interface IPerson { // "HasName"
val name: String
}

interface IPoliceMan : IPerson { // "HasDepartmentName"
val departmentName: String
}

open class Person(
override val name: String
) : IPerson

class PoliceMan(
override val departmentName: String,
name: String
) : Person(name), IPoliceMan

关于java - Kotlin中如何从泛型继承接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55557784/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com