Classe locale Java

Classe locale

Une classe locale est une classe définie dans une méthode d'une certaine classe.

règle

Modificateur d'accès non disponible (privé, protégé, public) modificateur statique non disponible les modificateurs abstraits et finaux peuvent être utilisés Accès aux membres de la classe externe

Dans le code ci-dessous, vous pouvez voir comment les arguments de la méthode de classe externe, les variables locales ne sont accessibles qu'avec des constantes et sont automatiquement constituées de constantes. De plus, on peut voir que les variables d'instance de la classe externe sont accessibles depuis la classe locale même si elles ne sont pas des constantes.

class OuterA{ //Classe extérieure
	private static int a = 1;
	private int b =2;
	
	void methodOuter(final int c, int d) {
		final int e =5; int f =6;
		//c=10; //c est une constante car elle a final. Ne peut pas être réaffecté.
		//d=10; //À ce stade, ce n'est pas une constante et peut être substituée.
		//Cependant, cela confirme que d est une variable, ce qui empêche les appels des classes locales.

        //d++; //Final est ajouté au moment de la déclaration de la variable, donc si vous apportez cette modification, vous ne pourrez pas appeler depuis la classe locale
		//f++;
		class A{ //Classe locale
			void method() {
				System.out.print(a+" ");
				System.out.print(b+" ");
				System.out.print(c+" ");
				System.out.print(d+" ");
				System.out.print(e+" ");
				System.out.print(f+" \n"); //「\"n" est un saut de ligne
				a++;
				b++;
				//c++;
				//d++;
				//e++;
				//f++;
				//c,d,e,f est une constante, mais a,b n'est pas une constante
				System.out.print(a+" "+b);
			}
		}
		new A().method();
	}
}



public class Test3 {

	public static void main(String[] args) {
		OuterA o = new OuterA();
		o.methodOuter(3,4);
	}
}

Résultat de sortie

1 2 3 4 5 6 
2 3 

point

(1) Les variables d'instance peuvent être appelées à partir d'une classe locale même si ce ne sont pas des constantes.

(2) Lors de l'appel d'un argument de méthode et d'une variable locale à partir d'une classe locale, il doit s'agir d'une constante (avec un modificateur final). (Si non joint, il est implicitement donné)

(3) Lorsque le modificateur final est implicitement ajouté, cela se fait au moment de la déclaration de la variable, donc lors de l'appel de la variable depuis la classe locale, avant d'appeler la variable depuis la classe locale (en utilisant la variable dans la classe locale) Si tel est le cas, ne réaffectez pas la valeur.

(4) Lorsque la valeur est modifiée (affectation, incrément, etc.) après la déclaration de la variable, la variable est confirmée et ne peut pas être appelée depuis la classe locale.

Les références

Michiko Yamamoto "Programmeur Java Gold SE8" Shosuisha.

Recommended Posts