Sobes.tech
Junior

Wat zijn anonieme klassen in Java en waar kunnen ze worden toegepast?

sobes.tech AI

Antwoord van AI

Anonieme klassen in Java zijn lokale klassen zonder naam. Ze worden gelijktijdig gedeclareerd en gemaakt. Ze worden meestal gebruikt wanneer eenmalige implementatie van een interface of uitbreiding van een abstracte of gewone klasse nodig is.

Toepassingen van anonieme klassen:

  • Gebeurtenisafhandelaars in GUI: Worden vaak gebruikt om klikafhandelaars voor knoppen of andere gebruikersacties te maken.

    // Voorbeeld met Swing ActionListener
    JButton button = new JButton("Klik mij");
    button.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            System.out.println("Knop ingedrukt!");
        }
    });
    
  • Implementatie van interfaces met één abstracte methode (SAM-interfaces): Voor de opkomst van lambda-uitdrukkingen was dit de belangrijkste manier om functionaliteit voor dergelijke interfaces te implementeren.

    // Voorbeeld met Runnable
    new Thread(new Runnable() {
        @Override
        public void run() {
            System.out.println("Thread gestart");
        }
    }).start();
    
  • Objecten "op het moment": Wanneer je snel een object met gewijzigde gedrag wilt maken ten opzichte van een bestaande klasse zonder een aparte benoemde klasse te hoeven maken.

    // Voorbeeld van uitbreiding van een abstracte klasse
    AbstractList<String> cityList = new AbstractList<String>() {
        private String[] cities = {"Moskou", "Sint-Petersburg"};
    
        @Override
        public String get(int index) {
            return cities[index];
        }
    
        @Override
        public int size() {
            return cities.length;
        }
    };
    System.out.println(cityList.get(0)); // Uitvoer: Moskou
    

Anonim Klassen hebben toegang tot lokale variabelen die final of effectief final zijn in het bereik waarin ze zijn gedeclareerd. Ze kunnen geen statische leden hebben en kunnen niet abstract of final zijn.