Java anonieme inner classes meesteren: definitie, syntax en praktische voorbeelden
Java anonieme inner classes meesteren
Ontdek hoe je anonieme inner classes in Java definieert, implementeert en benut met duidelijke, real-world voorbeelden.
In Java kan een klasse een andere klasse nesten – een inner class. Wanneer die inner class geen expliciete naam heeft, heet het een anonieme inner class.
Anonieme inner classes worden inline gedefinieerd binnen een andere klasse of expressie. Omdat ze geen naam hebben, worden ze alleen gecreëerd wanneer de omringende code draait, wat ze ideaal maakt voor korte, eenmalige implementaties.
Het typische patroon is:
class OuterKlasse { // creeer een anonieme inner class instantie Type instantie = new Type(parameters) { // ge-override methoden of additioneel gedrag }; }
Hier kan Type zijn:
- een superklasse die de anonieme klasse uitbreidt
- een interface die de anonieme klasse implementeert
Runtime creëert het statement hierboven een instantie van de anonieme klasse, die dan gebruikt kan worden via het gedeclareerde referentietype.
Belangrijk: Omdat de declaratie een expressie is, eindigt de afsluitende puntkomma het statement, niet de klasse-body.
Voorbeeld 1: Een klasse uitbreiden met een anonieme inner class
class Polygon { public void toon() { System.out.println("Binnen de Polygon klasse"); } } class AnoniemeDemo { public void creeerKlasse() { Polygon p1 = new Polygon() { @Override public void toon() { System.out.println("Binnen een anonieme klasse."); } }; p1.toon(); } } public class Main { public static void main(String[] args) { new AnoniemeDemo().creeerKlasse(); } }
Uitvoer
Binnen een anonieme klasse.
In deze illustratie breidt de anonieme klasse Polygon uit en overrided toon(). Wanneer creeerKlasse() draait, wordt een instantie van de anonieme subklasse gecreëerd, en de ge-override methode aangeroepen.
Voorbeeld 2: Een interface implementeren met een anonieme inner class
interface Polygon { void toon(); } class AnoniemeDemo { public void creeerKlasse() { Polygon p1 = new Polygon() { @Override public void toon() { System.out.println("Binnen een anonieme klasse."); } }; p1.toon(); } } public class Main { public static void main(String[] args) { new AnoniemeDemo().creeerKlasse(); } }
Uitvoer
Binnen een anonieme klasse.
Hier implementeert de anonieme klasse de Polygon interface, wat de vereiste methode-implementatie levert in een enkel, beknopt blok.
Waarom anonieme inner classes gebruiken?
Anonieme inner classes schitteren in scenario's waar je een korte, context-specifieke implementatie nodig hebt:
- Event listeners en callbacks in GUI frameworks – eenvoudig gedrag koppelen zonder een aparte genamde klasse te creëren.
- Thread creatie via
Runnable– schrijf de run-logica inline. - Lokale adapters of wrappers – overrided een paar methoden van een bestaande klasse.
Voordelen zijn:
- Beknoptheid – geen apart bestand of klassedeclaratie.
- Scope controle – de klasse is alleen zichtbaar waar het gedefinieerd is.
- Runtime flexibiliteit – instanties worden alleen gecreëerd wanneer nodig.
Voor grotere, herbruikbare logica, overweeg genamde klassen of lambda-expressies (voor functionele interfaces) om de code onderhoudbaar te houden.
Java
- Java's final-sleutelwoord begrijpen: variabelen, methoden en klassen
- Java instanceof operator: een uitgebreide gids
- Java-erfenis meesteren: concepten, typen en praktische voorbeelden
- Java geneste static classes begrijpen: gebruik, verschillen en voorbeelden
- Java Singleton patroon uitgelegd: hoe veilig te implementeren en gebruiken
- Java Reflectie meesteren: klassen, methoden en velden inspecteren tijdens runtime
- Java ArrayList meesteren: operaties, methoden en best practices
- Java Stack-klasse: Uitgebreide handleiding voor gebruik en methoden
- Java ObjectOutputStream: Serialisatie, methoden en praktische voorbeelden
- Java Generics: Herbruikbare, type-veilige code bouwen
- Java-bestandsbewerkingen onder de knie krijgen met java.io – Aanmaken, lezen, schrijven en verwijderen