2016-05-01 15 views
2

Ich lerne JavaFX mit Intellij IDEA. Beim Kompilieren des folgenden Codes:Fehler beim Implementieren der Schnittstelle als anonyme innere Klasse

public class Main extends Application implements EventHandler<ActionEvent>{ 

//More code 

    button.setOnAction(new EventHandler<ActionEvent>() { 
     @Override 
     public void handle(ActionEvent event) { 
      System.out.println("Hello World"); 
     } 

//More code 

    }); 

Ich bekomme die Fehlermeldung "Class must either be declared abstract or implement abstract method". Aber durch die Beobachtung des Codes implementiere ich eindeutig die funktionale Schnittstelle mit einer anonymen inneren Klasse.

Wenn ich eine leere handle Methode innerhalb der Main Klasse erstellen, funktioniert der Code gut, aber ich glaube nicht, dass ich sollte. Was ist los!

Antwort

5

Der Grund ist diese Zeile:

public class Main extends Application implements EventHandler<ActionEvent>{ 

die implements EventHandler<ActionEvent> entfernen und Sie sind gut.

Sie sind wahrscheinlich verwirrt, weil Sie beide Ihre Main Klasse die Schnittstelle implementieren, und Sie erstellen eine anonyme innere Klasse, die auch die Schnittstelle implementiert. Damit haben Sie eine Klasse, die die Methode implementiert hat - die anonyme innere Klasse. Aber die äußere Main Klasse hat die Methode nicht implementiert, weshalb Sie die Fehlermeldung erhalten.