Innholdsfortegnelse:
Video: Web Apps of the Future with React by Neel Mehta 2024
Her er store nyheter! Du kan definere en klasse i en annen klasse! Dette er nyttig for Android-apputviklere. De fleste klassene bor ikke i en annen klasse, og de fleste klasser inneholder ikke andre klasser. Men når ideen bak en klasse skriker ut for å være en del av en annen klasse, kan du gjerne lage en klasse i en klasse.
Navngitte indre klasser
I denne koden inneholder MyActivity-klassen sin egen MyListener-klasse.
pakke com. allmycode. prøver; importere android. app. Aktivitet; importere android. os. Bunt; importere android. utsikt. Utsikt; importere android. utsikt. Utsikt. OnClickListener; importere android. widget. Knapp; offentlig klasse MyActivity utvider Aktivitet {Knapp-knappen; @Override public void onCreate (Bundle savedInstanceState) {super. onCreate (savedInstanceState); setContentView (R. layout. main); knapp = ((knapp) findViewById (R.ID.-knapp1)); knapp. setOnClickListener (ny MyListener () );} klasse MyListener implementerer OnClickListener {@Override public void onClick (Vis arg0) {knapp. setBackgroundColor (android.grafik.color.Grey);}}}
MyListener-klassen er en indre klasse. En indre klasse er mye som alle andre klasser. Men innenfor en indre klasses kode, kan du referere til de vedlagte klassens felter. For eksempel bruker onClick-metoden i MyListener navneteknappen, og knappen er definert i vedlegget MyActivity-klassen.
Anonyme indre klasser
Merk at koden ovenfor bruker MyListener-klassen bare én gang. (Den eneste bruken er i en samtale til knapp. SetOnClickListener.) Så, trenger du virkelig et navn på noe som bare brukes en gang? Nei, det gjør du ikke. Du kan erstatte hele definisjonen av den indre klassen inne i samtalen til knappen. setOnClickListener. Når du gjør dette, har du en anonym indre klasse. Følgende kode viser hvordan den fungerer.
pakke com. allmycode. prøver; importere android. app. Aktivitet; importere android. os. Bunt; importere android. utsikt. Utsikt; importere android. utsikt. Utsikt. OnClickListener; importere android. widget. Knapp; offentlig klasse MyActivity utvider Aktivitet {Knapp-knappen; @Override public void onCreate (Bundle savedInstanceState) {super. onCreate (savedInstanceState); setContentView (R. layout. main); knapp = ((knapp) findViewById (R.ID.-knapp1)); knapp. setOnClickListener (ny OnClickListener () { @Override public void onClick (Vis arg0) {knapp. setBackgroundColor (android.grafik.farge.GROG);} } );}} > Inner klasser er gode for ting som hendelseshåndterere, som onClick-metoden.Den vanskeligste tingen om en anonym indre klasse er å følge med på parentesene, de krøllete båndene og innrykket. Så her er noen råd: Begynn med å skrive kode uten noen indre klasser. Senere, når du blir lei av vanlige Java-klasser, eksperimentere ved å bytte noen av dine vanlige klasser til indre klasser.