Dernièrement, j'ai trouvé que cela fonctionne, même si je pense qu'il ne:Java: Pourquoi les classes internes anonymes peuvent accéder aux méthodes de la classe externe?
class Outer
{
Button b;
void foo() {}
void bar()
{
b = new Button();
b.setOnClickListener(new OnClickListener(){
@Override
public void OnClick()
{
foo();
}
});
}
}
J'attends Outer.this.foo() être nécessaire, mais il semble que le simple fait foo() fonctionne aussi. Quelqu'un pourrait-il me dire quand exactement cela a été ajouté à la langue? S'il vous plaît, aidez-moi à comprendre les règles de résolution de noms exactes ici. Merci!
Les questions:
1) Pourquoi est-ce travail?
2) Si cela fonctionne, pourquoi avons-nous besoin de la syntaxe "Outer.this"?
Est-ce une plainte contre la conception du langage? –
Non, je veux juste comprendre les règles de résolution de nom exact ici. –
Je ne trouve pas votre question très utile. Demander également des ressources hors site est hors sujet. –