2010-07-01 11 views
3

J'ai un code comme ceci:modification de la classe interne de l'attribut de classe propriétaire

class Foo() { 
    time_to_play = 0 
    class Bar() { 
     void change_player() { 
      //I need something HERE 
     } 
    } 

} 

Et je dois changer l'attribut time_to_play de la classe Foo, mais faire ce changement à l'intérieur de la méthode change_player(), qui est sous classe Bar .

Je ne peux pas déclarer la classe Bar en dehors de la classe Foo, et faire un 'extend', et appeler super. ..., parce que ça casserait le OO dans mon cas.

Aussi, je ne veux pas faire time_to_play une variable statique, appelant Foo.time_to_play

Comment puis-je faire cela?

+0

En outre, ignorer les erreurs lexicales de la langue. –

Répondre

6

Qu'est-ce que vous voulez est:

void change_player() { 
    Foo.this.time_to_play = // something 
} 
+0

Bien sûr, cela n'est nécessaire que dans le cas où la classe interne a un champ du même nom. Là encore, c'est toujours bon d'être sûr. – musiKk

+0

@musikk yup, j'aime être explicite dans mon code. – jjnguy