Frage : genistete Kategorienbeschränkungen

Hallo, las

I irgendwo, dass Beschränkungen der genisteten Kategorien are

a. genisteten Schnittstellen immer implizit static
b. sind, das innere Kategorien möglicherweise nicht erklären können, dass statisches Mitglieds (mit Ausnahme der konstanten Kompilierzeitfelder)

I nicht verstanden tat, was ihese Beschränkungen bedeutet. Können Sie mich bitte beraten.  Alle mögliche Verbindungen, Betriebsmittel, Vorschläge, Beispielcode schätzten in hohem Grade. Dank im Voraus

Antwort : genistete Kategorienbeschränkungen

(A.) Bedeutet gerade, dass Sie Static vor einer inneren Schnittstelle nicht setzen müssen.  Sie kann immer bezogen werden, während eine innere Kategorie Kompilierzeitstörungen produziert, wenn sie Außenseite der Kategorien benutzt, es sei denn sie statisch ist.  Das erste angebrachte Code-Stückchen sehen.

(B.) Dieses scheint, falsch zu sein, wie ich das folgende ohne irgendwelche Störungen tun kann:

Kategorie MyClass1 {
      allgemeine statische Kategorie MyInnerClass1 {
            allgemeiner Static int a = 0;

            allgemeine statische leere Methode () {
            }
      }
}

allgemeine Kategorie WhiteMage {
      allgemeine Staticlücke hauptsächlich (Schnur [] args) {
            MyClass1.MyInnerClass1.a = 45;
            MyClass1.MyInnerClass1.method ();
      }
}
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
Kategorie MyClass1 {
	allgemeine statische Schnittstelle MyInnerInterface1 {
	}

	allgemeine Schnittstelle MyInnerInterface2 {
	}

	allgemeine statische Kategorie MyInnerClass1 {
	}

	allgemeine Kategorie MyInnerClass2 {
	}
}

//no-Störungen
Kategorie MyClass2 einführt MyClass1.MyInnerInterface1, MyClass1.MyInnerInterface2 {
}

/**
 *
 * @author WhiteMage bei http://www.experts-exchange.com/
 *
allgemeine Kategorie WhiteMage {
	allgemeine Staticlücke hauptsächlich (Schnur [] args) {
		MyClass1.MyInnerInterface1 a = neues MyClass2 (); //no-Störung
		MyClass1.MyInnerInterface2 b = neues MyClass2 (); //no-Störung
		MyClass1.MyInnerClass1     c = neues MyClass1.MyInnerClass1 (); //no-Störung

		//ERROR!
		MyClass1.MyInnerClass2     d = neues MyClass1.MyInnerClass2 ();
	}
}
Weitere Lösungen  
 
programming4us programming4us