我有一个名为的界面 UserManager
interface UserManager {
var user:User
/* ... */
}
Run Code Online (Sandbox Code Playgroud)
和一个名为UserManagerImpl
,实现的类UserManager
class UserManagerImpl : UserManager {
override var user: User // = must provide an User object
/* ... */
}
Run Code Online (Sandbox Code Playgroud)
这是我的问题:
如何允许其他类设置一个User
在UserManager()
任何时间(即不提供初始User
旁边的财产申报对象,并让另一个阶级创造和提供一个User
实例)?
算一下吧
User
是一个非null值,所以没有可空的属性(User?
)setUser(User)
和getUser()
方法mfu*_*n26 10
确实,"接口不能具有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)
}
Run Code Online (Sandbox Code Playgroud)
打印类似的东西LateinitKt$main$1@4b1210ee
.