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

在Java中重写接口而不是父类

章承基
2023-03-14

我有一个类扩展了另一个类(ReloadableResourceBundleMessageSource),并实现了一个接口(MyMessageProvider),如下所示:

public class CustomMessageSource extends ReloadableResourceBundleMessageSource implements myMessageProvider{

    @Override
    public String getMessage(String code, Object[] objects, final Locale locale{
        try {
            return getMessage(code, objects, locale);
        } catch (NoSuchMessageException e) {
            return code;
        }
    }
}

接口类和父类都有getMessage函数,但我只想重写接口类。目前,这段代码会产生编译错误,因为父类(ReloadableResourceBundleMessageSource)中的getMessage是final

共有1个答案

龚星洲
2023-03-14

如果重写getmessageinternal()方法,该方法不是final,并且由getmessage()方法调用,则可以通过不返回null来影响结果。您不需要在代码中更改对getmessage()方法的任何调用,因为它们将调用内部方法本身。

@Override
public String getMessageInternal(String code, Object[] objects, final Locale locale) {
        String foo = super.getMessageInternal(code, objects, locale);

        return foo == null ? code : foo;
    }
}
 类似资料:
  • 但是,我也看到了一种奇怪的方法来重写接口方法: 3.子类只实现接口,但由父类重写接口中的方法: 覆盖接口方法的第三种方法在android框架源代码中非常常见,例如: 这样设计的原因是什么?

  • 我写了自己的类加载器,它与类一起工作,实现了接口插件。但是我不能将类转换为插件。怎么了? 错误:(18,47)java:不兼容的类型:java。lang.类无法转换为插件 我补充说,这是我的SimpleClassLoader类的主要部分,它扩展了ClassLoader。

  • 问题内容: 在正确掌握接口最佳实践的过程中,我注意到一些声明,例如: 代替 -据我所知,原因是因为它有一定的灵活性,以防万一你不想实现ArrayList,但又可能实现另一种类型的列表。 通过这种逻辑,我建立了一个示例: 我的问题是,我无法访问batheSelf()方法,因为它仅适用于Cat。这使我相信,仅在使用接口中声明的方法时才应从接口声明(而不是子类中的其他方法),否则应直接从类中声明(在本例

  • 问题内容: 亲爱的开发人员, 我遇到了这个问题,对我来说似乎有点奇怪。看一下这段代码: 在其他包装上,我有以下代码: 运行时不接受提到的行,因为 “不能在fieldint.AddFilter的参数中使用fieldfilter(类型为 coreinterfaces.FieldFilter)作为类型为 coreinterfaces.FilterInterface:* coreinterfaces.Fi

  • 我正在从这个url阅读Spring Hibernate CRUD教程 http://viralpatel.net/blogs/spring3-mvc-hibernate-maven-tutorial-eclipse-example/ 请任何人告诉我为什么在ContactController中。java,接口是自动连接的,而不是类ContactServiceImpl。 类似地,在接口被注入。我们不应