据说我有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
我是一名优秀的程序员,十分优秀!