J’ai un Java programmer qui ressemblent à ceci.
Que signifie « LocalScreen.this » signifie en aFuncCall ?
J’ai un Java programmer qui ressemblent à ceci.
Que signifie « LocalScreen.this » signifie en aFuncCall ?
Cela signifie que le instance de l’outer
classe.
Écrire `` sans un qualificateur retourne l’instance de la classe interne qui l’appel est à l’intérieur de.
Le compilateur prend le code et fait quelque chose comme ça:
public class LocalScreen
{
public void method()
{
new LocalScreen$1().run;
}
public String toString()
{
return "A LocalScreen object";
}
public void onMake(LocalScreen ls) { /* ... */ }
public static void main(String[] args)
{
new LocalScreen().method();
}
}
class LocalScreen$1
extends Runnable
{
final LocalScreen $this;
LocalScreen$1(LocalScreen $this)
{
this.$this = $this;
}
public void run()
{
// Prints "An anonymous Runnable"
System.out.println(this.toString());
// Prints "A LocalScreen object"
System.out.println($this.toString());
// Won't compile! 'this' is a Runnable!
//onMake(this);
// Compiles! Refers to enclosing object
$this.onMake($this);
}
public String toString()
{
return "An anonymous Runnable!";
}
}
Comme vous pouvez le voir, lorsque le compilateur prend un intérieur de classe il la convertit à l'extérieur de la classe (c'était une décision de conception faite il y a LONGTEMPS, de sorte que le VMs n'a pas besoin d'être changé pour comprendre les classes internes).
En cas de non-statique à l'intérieur de la classe est faite, il a besoin d'une référence à la société mère, de sorte qu'il peut appeler des méthodes/accès aux variables de l'extérieur de la classe.
La ce à l'intérieur de ce qui était à l'intérieur de la classe n'est pas le bon type, vous devez accéder à l'extérieur de la classe pour obtenir le bon type de l'appel de la onMake méthode.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.