Vraag : genestelde klassenbeperkingen

Hallo, ergens las

I dat de beperkingen van genestelde klassen are
a. genestelde interfaces/>
b. binnenklassen kunnen niet de statische verklaren zijn leden (met uitzondering van compileer - tijd constante gebieden)

I begrepen welke niet ihese beperkingen betekent. Kunt u me alstublieft adviseren.  Om het even welke verbindingen, middelen, suggesties, hoogst gewaardeerde steekproefcode. Dankt vooraf

Antwoord : genestelde klassenbeperkingen

(a.) betekent enkel dat u niet statisch voor een binneninterface moet zetten.  Het kan altijd worden van verwijzingen voorzien, terwijl een binnenklasse compileren-tijdfouten zal veroorzaken als het buiten de klassen heeft gebruikt tenzij het statisch is.  Zie eerste codefragment in bijlage.

(b.) dit schijnt vals te zijn, aangezien ik het volgende zonder enige fouten kan doen:

klasse MyClass1 {
      openbare statische klasse MyInnerClass1 {
            openbaar statisch int. a = 0;

            openbare statische nietige methode () {
            }
      }
}

openbare klasse WhiteMage {
      openbare statische nietige leiding (Koord [] 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:
klasse MyClass1 {
	openbare statische interface MyInnerInterface1 {
	}

	openbare interface MyInnerInterface2 {
	}

	openbare statische klasse MyInnerClass1 {
	}

	openbare klasse MyInnerClass2 {
	}
}

//no fouten
klassen MyClass2 instrumenten MyClass1.MyInnerInterface1, MyClass1.MyInnerInterface2 {
}

/**
 *
 * @author WhiteMage in http://www.experts-exchange.com/
 */
openbare klasse WhiteMage {
	openbare statische nietige leiding (Koord [] args) {
		MyClass1.MyInnerInterface1 a = nieuwe MyClass2 (); //no fout
		MyClass1.MyInnerInterface2 B = nieuwe MyClass2 (); //no fout
		MyClass1.MyInnerClass1     c = nieuwe MyClass1.MyInnerClass1 (); //no fout

		//ERROR!
		MyClass1.MyInnerClass2     D = nieuwe MyClass1.MyInnerClass2 ();
	}
}
Andere oplossingen  
 
programming4us programming4us