我不太明白这是怎么回事。有人能解释一下吗?
我得到以下错误:Type of 'exoPlayer' doesn't match the type of the overridden var-property 'public abstract var exoPlayer: ExoPlayer? defined in...
当我编译时:
class LocalPlayback(context: Context, override var exoPlayer: SimpleExoPlayer?) : Playback {
private val context: Context
//... other stuff...
}其中,LocalPlayback扩展了回放:
interface Playback {
var exoPlayer: ExoPlayer?
//... other stuff...
}SimpleExoPlayer实现了ExoPlayer接口。
发布于 2018-10-13 05:00:14
变量既允许获取值,也允许设置值。以类型安全的方式重写变量是不可能的,因为使用超级类型,他们可以将值设置为更一般的类型,然后当有人使用重写的var时,它将是错误的类型。通过将超级类型更改为val,可以防止将其设置为一般类型,从而消除了问题。
发布于 2017-06-24 22:07:25
您需要在接口中将您的exoPlayer变量声明为val,一切都会好起来的。
interface Playback {
val exoPlayer: ExoPlayer?
//... other stuff...
}我举了一个例子来测试:
interface Playback {
val exoPlayer: ExoPlayer
}
class LocalPlayback(override var exoPlayer: SimpleExoPlayer) : Playback
open class ExoPlayer
class SimpleExoPlayer : ExoPlayer()它编译得很好。也许其他人能帮我们解释一下。
https://stackoverflow.com/questions/44740473
复制相似问题