访问封闭 class 的属性
Accessing properties of enclosing class
如何访问封闭 class 的属性?我在 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
classes,我如何对单例执行同样的操作?
单例不能是内部的,因为它只有一个实例,而内部实例 类 保留对外部(封闭)实例的引用 类。因此,单例对象不能保存对封闭 类 的引用,也不能访问它们的属性。
作为解决方法,使用非单例的匿名对象:
class A(val foo: Int) {
val listener = object : AnimationListenerAdapter {
override fun onAnimationEnd(animation: Animation?) {
println(foo) // access to outer
}
}
}
如何访问封闭 class 的属性?我在 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
classes,我如何对单例执行同样的操作?
单例不能是内部的,因为它只有一个实例,而内部实例 类 保留对外部(封闭)实例的引用 类。因此,单例对象不能保存对封闭 类 的引用,也不能访问它们的属性。
作为解决方法,使用非单例的匿名对象:
class A(val foo: Int) {
val listener = object : AnimationListenerAdapter {
override fun onAnimationEnd(animation: Animation?) {
println(foo) // access to outer
}
}
}