2016-05-01 61 views
2

Intellij IDEAを使用してJavaFXを学習しています。次のコードをコンパイルするとき:インターフェイスを匿名の内部クラスとして実装する際のエラー

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 

    }); 

エラーメッセージ"Class must either be declared abstract or implement abstract method"が表示されます。しかし、コードを観察することで、私は匿名の内部クラスを使って機能的なインターフェースを明確に実装しています。

handleメソッドをMainクラスの内部に構築すると、コードはうまく動作しますが、私はそうしなければならないと思います。何が起こっている!

答えて

5

理由は、この行です:

public class Main extends Application implements EventHandler<ActionEvent>{ 

implements EventHandler<ActionEvent>を削除し、あなたは良いです。

Mainクラスがインターフェイスを実装していて、そのインターフェイスも実装している匿名の内部クラスを作成しているため、おそらく混乱します。これにより、メソッドを実装したクラス(匿名の内部クラス)が残されます。しかし、外側のMainクラスはメソッドを実装していないため、エラーメッセージが表示されます。

関連する問題