我有一个名为UserManager
interface UserManager {
var user:User
/* ... */
}
和一个名为UserManagerImpl
的类,它实现了UserManager
class UserManagerImpl : UserManager {
override var user: User // = must provide an User object
/* ... */
}
这是我的问题:
如何允许其他班级随时在User
设置UserManager()
(即不会在该属性旁边提供初始User
对象声明并让另一个类创建并提供User
实例)?
记入
User
为非空值,因此没有可空属性(User?
)setUser(User)
和getUser()
方法答案 0 :(得分:8)
"接口确实没有 lateinit 属性"但这并不妨碍实现类使用它:
interface User
interface UserManager {
var user: User
}
class UserManagerImpl : UserManager {
lateinit override var user: User
}
fun main(args: Array<String>) {
val userManager: UserManager = UserManagerImpl()
userManager.user = object : User {}
println(userManager.user)
}
打印类似LateinitKt$main$1@4b1210ee
的内容。