我最近使用这段代码,并意识到在匿名类中,我无法通过.this 访问实例,如下所示:
Sprite sprFace = new Sprite() {
@Override
protected void onManagedUpdate(float pSecondElapsed) {
runOnUpdateThread(new Runnable() {
@Override
protected void run() {
Sprite.this.getParent().detach(Sprite.this); // Here
}});
}
};
我知道如何解决它(只需声明一个“我”变量),但我需要知道为什么我不能使用 <Class>.this
?
最佳答案
<Class>.this
语法提供了一种引用 <Class>
类型对象的特殊方式,而不是阴影类型。
此外,<Class>
必须是您要访问的类型的名称。在你的情况下,Sprite
不是 sprFace
的实际类型.相反,sprFace
是 Sprite
的匿名子类 的实例, 因此语法不适用。
关于java - 为什么我不能在匿名类中使用 <Class>.this?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7103087/