Je veux savoir pourquoi java interdit statique déposée/de la méthode à l'intérieur de intérieur de la classe
Parce que ces classes internes sont "instance" inner classes. Qui est, ils sont comme une instance de l'attribut de l'affichage de l'objet.
Depuis qu'ils sont "instance" des classes, il ne ferait aucun sens pour permettre l' static
, static
à pour but de travailler sans une instance en premier lieu.
C'est comme vous essayez de créer un statique/instance de l'attribut dans le même temps.
Prenons l'exemple suivant:
class Employee {
public String name;
}
Si vous la création de deux instances de l'employé:
Employee a = new Employee();
a.name = "Oscar";
Employee b = new Employee();
b.name = "jcyang";
Il est clair que chacun a de sa propre valeur pour la propriété name
droit?
La même chose se passe avec l'intérieur de la classe, de chaque intérieur instance de classe est indépendante des autres intérieure instance de classe.
Donc, si vous essayez de créer un counter
de l'attribut de classe, il n'y a aucun moyen d'action que la valeur de l'ensemble de deux instances différentes.
class Employee {
public String name;
class InnerData {
static count; // ??? count of which ? a or b?
}
}
Lorsque vous créez l'instance a
et b
dans l'exemple ci-dessus, ce serait une bonne valeur pour la variable statique count
? Il n'est pas possible de le déterminer, car l'existence de l' InnerData
classe dépend entièrement de chaque de la enfermant des objets.
C'est pourquoi, lorsque la classe est déclarée static
, il n'a pas besoin plus un vivant exemple, de la vivre soi-même. Maintenant qu'il n'y a pas de dépendance, vous pouvez déclarer un attribut static.
Je pense que cela semble répétitif, mais si vous pensez que sur les différences entre les instace contre les attributs de classe, il va donner un sens.