2016-07-04 14 views
-2

Ich lese einig Java-Code und ich kam in der folgenden ungewohnten Syntax:Methode innerhalb einer Methode java

controler.addOverridingModule(new AbstractModule() { 
     @Override 
     public void install() { 
      this.addPlanStrategyBinding("RandomTripToCarsharingStrategy").to(RandomTripToCarsharingStrategy.class) ; 
      this.addPlanStrategyBinding("CarsharingSubtourModeChoiceStrategy").to(CarsharingSubtourModeChoiceStrategy.class) ; 
     } 
    }); 

Ich bin verwirrt, weil der Entwickler eine neue Methode erstellt („install“) im Gespräch addOverridingModule . Könnte mir bitte jemand sagen, was hier vor sich geht?

Danke!

+1

Die Methode install ist eine Methode der inneren Klasse 'AbstractModule'. – Jens

+0

Der gesamte Ausdruck 'new AbstractModule {/ * ... * /}' ist eine * anonyme Klasseninstanziierung *. Aus, um ein Ziel zu finden ... –

Antwort

0

addOverridingModule erwartet eine Instanz des Typs AbstractModule (dies kann eine Klasse oder eine Schnittstelle sein - es ist nicht klar, welche der beiden in Ihrem Beispiel ist, aber es spielt keine Rolle).

Dieses Snippet übergibt eine Instanz einer anonymen Klasse, die AbstractModule implementiert/erweitert. install ist eine Methode erforderlich von AbstractModule.

Verwandte Themen