对于接口,我想添加一个返回具体实现对象的函数。
所以有了界面:
interface Content {
fun <???> cloneMe(): ?
}
和班级
class Music: Content
class Video: Content
cloneMe()
类的函数Music
应该返回一个对象,而类Music
的函数应该返回一个对象。cloneMe()
Video
Video
我最接近的是:
interface Content {
fun <T: Content> cloneMe(): T
}
class Music : Content {
override fun <T : Content> cloneMe(): T {
return Music() as T
}
}
那我可以
val music: Music = Music().cloneMe<Music>()
这里的问题是我必须做一个未经检查的演员表,这“允许我”(即会编译)做
class Music : Content {
override fun <T : Content> cloneMe(): T {
return Video() as T
}
}
这是有问题的。
实现这一目标的最佳方法是什么?