当前位置: 首页 > 知识库问答 >
问题:

重写接口函数时,出现错误“方法不重写其超类中的方法”?

吕宣
2023-03-14

有一个带有一些功能的接口。基类实现接口。然后在子类中重写函数。

但是@override给出了编译器错误“方法不从其超类重写方法”

问题:在子类中,如何覆盖基类中实现的接口函数?

public interface TheCallback {
    void onImageUrlReady(final ImageView view, final ImageRecord imageData);

}

public class ImageFragment extends Fragment implements TheCallback {

    @Override 
    void onImageUrlReady(final ImageView view, final ImageRecord imageData) {
        //base class implementation
    }
}

public class DerivedFragment extends ImageFragment  {
    @Override //<=== got compile error here
    void onImageUrlReady(final ImageView view, final ImageRecord imageData) {
        //sub class override implementation
    }
}

共有1个答案

司马飞鸿
2023-03-14

您可能正在使用Java1.5@重写可用于1.6中实现的接口方法。

还要看看为什么javac在@Override注释上失败了

 类似资料:
  • 我正在使用JUnit 5,并从“软件测试”书中复制了代码,以便创建一个模拟对象进行测试。部分测试器代码是: 我有一个编译器错误,它说“方法isLeap(int)必须覆盖或实现一个超类型方法”。此错误在我覆盖isLeap()方法的行中报告。(@over下面的行) 好吧,令人惊讶的是,这就是我所做的。所以我不知道这是什么抱怨。下面是simpleDate类中的isLeap()方法: 正如您所看到的,测试

  • 我有以下代码:https://pastebin.com/19njjj9s(我放在这里是因为对于stackoverflow来说代码太多了) 但是它不会覆盖onClick方法(第192行),我不明白为什么。 重写onclick方法背后的想法是获取日期并接收radiogroup以设置其中一个值。如果有人能帮我,我会帮你的。

  • 我是Android和Java的初学者。我寻找这个错误的答案,但stackOverflow中的任何东西都不适合我的情况。我在读一本书,书中说我们需要使用一个onListItemClick()方法,该方法来自我们创建的扩展ListFragment的类(CrimeListFragment)(使用该方法和类是必需的)。 然而,我不断发现以下错误: 错误说 “CrimeListFragment类型的onLi

  • 我试图使用Reflection.Emit发出一个类,该类将在运行时从多个接口继承,我无法提前知道哪些接口。 根据 MSDN/TypeBuilder.Define方法优先: 要重写基类的方法或实现接口的方法,只需发出与要重写或实现的方法具有相同名称和签名的方法 下面是我重写接口方法的代码: 这是有效的,除非我从两个接口继承,这两个接口都有一个同名的方法。显然,这是因为我没有为该方法提供完全限定的名称