如何访问封闭类的属性?我在Kotlin和单身人士一起工作。
private object IndeterminateAnimationListener : Animation.AnimationListener {
override fun onAnimationStart(animation: Animation?) {}
override fun onAnimationEnd(animation: Animation?) {
// How do I access the properties of the enclosing
// from here?
}
override fun onAnimationRepeat(animation: Animation?) {}
}
PS:我可以使用inner
课程,我如何对单身人士做同样的事情?
答案 0 :(得分:2)
单例不能是内部的,因为它只有一个实例,内部类的实例保持对外部(封闭)类的实例的引用。因此,单例对象不能保存对封闭类的引用,也不能访问它们的属性。
作为一种解决方法,使用匿名对象,而不是单例:
class A(val foo: Int) {
val listener = object : AnimationListenerAdapter {
override fun onAnimationEnd(animation: Animation?) {
println(foo) // access to outer
}
}
}