[JAVA] Ich habe das überprüft

Beim Verweisen auf eine äußere Klasse aus der inneren Klasse Externer Klassenname Es scheint eine Notation von zu geben, also habe ich ein wenig recherchiert.

Zuerst habe ich mir etwas ausgedacht


public class Main {
    public static void main(String []args) {
        TestThis t = new TestThis();
        t.this.hp = 10;///
    }


    public class TestThis {
        int hp;
        int mp;
        String name;
    }

}

Ich fragte mich, ob das der Fall war

t.this.hp = 10;

Dieser Teil ist eine Sonnenfinsternis und kann nicht in eine Form aufgelöst werden. Möchten Sie eine t-Klasse erstellen? Kam heraus.

Wenn t.hp = 10; was ist in Ordnung?

Anscheinend war die Interpretation der inneren Klasse falsch,

class out~{ class in~{ } }

Bild von. Experimentieren Sie auf dieser Grundlage erneut mit Eclipse.

public class Main {
    public static void main(String []args) {
    	Outer o =  new Outer();
    	Outer.Inner oi = o.new Inner();
    	oi.innerPrint();
    }
    
    public class Outer{
	
        int outerhp = 10;
	
        public class Inner{
		
            public void innerPrint() {
                System.out.println(Outer.this.outerhp);
            }
		
        }
	
    }

}

Immer noch ein Fehler Laut Eclipse Es gibt keine zugängliche Hauptgehäuseinstanz vom Typ. Sie müssen die Zuordnung für eine umschließende Instanz vom Typ Main einschränken (z. B. x.new A (), wobei x eine Instanz von Main ist).

Als ich es nachgeschlagen habe, habe ich ein wenig nicht verstanden.

public class Main {
    public static void main(String []args) {
    	Outer o =  new Outer();
    	Outer.Inner oi = o.new Inner();
    	oi.innerPrint();
    }

    public static class Outer{

        int outerhp = 10;

        public class Inner{

            public void innerPrint() {
                System.out.println(Outer.this.outerhp);
            }

        }

    }

}

Aus dem Ergebnis geht hervor, dass es fehlerfrei funktioniert. (Äußere Klasse ist auf statisch gesetzt)

Es sieht aus wie etwas in der Nähe eines Fehlers, also möchte ich es morgen untersuchen. http://d.hatena.ne.jp/chiheisen/20110502/1304272928 Wenn ich mir die Position des Einzugs ansehe, habe ich das Gefühl, etwas anderes als meinen Code zu sagen. main (String [] args) befindet sich in Outer ... Ich habe noch nie einen solchen Code geschrieben.

Outer.Inner oi = o.new Inner();

Ich glaube, ich habe diesen neuen Weg schon einmal in einem Buch gesehen. Sie können das Buch noch einmal mit einem Baumstumpf auf dem Cover lesen.

Jedes Mal, wenn ich den Einzug korrigiere, verschiebt er sich. Ich frage mich, ob das Format anders ist, wenn ich es aus Eclipse eingefügt habe.

Recommended Posts

Ich habe das überprüft
Ich habe versucht, das vorherige Leben vor dem vorherigen Leben anstelle von Zundoko Kiyoshi zu überprüfen
Ich verstehe das! Kürzeste Übereinstimmung
Dies
Leistungsschaltermuster habe ich überprüft
Ich habe Java Flight Recorder (JFR) überprüft.
Ich habe den Teil von java.net.URL # getPath überprüft
Ich habe die Anzahl der Taxis mit Ruby überprüft