4

単一のメソッドで次のインターフェイスを作成しました。

public interface Greeting {

   public void perform();
}

インターフェイスのインスタンスをgreet()メソッドに渡そうとしました。

public class Greeter {

  public void greet(Greeting greeting){
    greeting.perform();
 }

 public static void main(String[] args) {       
    Greeter greeter=new Greeter();
 }
}

Greeting インターフェイスの実装を作成しました。

public class HelloWorldGreeting implements Greeting {

 @Override
 public void perform() {
    System.out.println("Hello World");

 }
}

エラー(HelloWorldGreeting 型のメソッド perform() は、スーパータイプ メソッドをオーバーライドまたは実装する必要があります)が発生し、「@Override アノテーションを削除する」という簡単な修正が行われました。

コンパイラの設定も確認しました。1.8のみです。

ここに画像の説明を入力

エラーが発生する理由を教えてください。または、エラーの修正を手伝ってください。前もって感謝します。

4

6 に答える 6

6

エラーが発生する理由を教えてください。または、エラーの修正を手伝ってください。

これは、最新のクラス ファイルが生成されていない場合に発生する可能性があります。つまり、クラス ファイルがまだ古いファイルを参照しているため、オーバーライド メソッドのシグネチャが一致していません。そのため、プロジェクトが適切にビルドされ、最新のクラス ファイルが生成されていることを確認してください。

Eclipse では、Project (上部のバー) -> cleanを実行し、最新のクラス ファイルが生成されているかどうかを確認します (project/target/classesフォルダーまたは構成したその他の場所)。また、クラス ファイルの生成を妨げる可能性のある他のエラーがプロジェクトにないことを確認してください。プロジェクトをビルドできない理由については、こちらを参照することもできます。

于 2017-03-26T06:50:32.673 に答える