我有一个名为的界面 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.
| 归档时间: |
|
| 查看次数: |
1274 次 |
| 最近记录: |