首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >登录接口方法

登录接口方法
EN

Stack Overflow用户
提问于 2018-02-13 04:17:10
回答 4查看 16.2K关注 0票数 14

到目前为止,我一直在研究java 7,最近我转到了java-8,令人惊讶的是,您可以在java-8接口中使用add methods

到目前为止,good....loved这个新的东西!

现在,我的问题是,logging是任何开发中必不可少的一部分,但似乎lombok.extern.slf4j不允许您通过接口方法添加log内容,因为它只允许在classesenums上使用。

您如何log您的接口方法(如果通过lombokis this的唯一方式??)?还是接口方法不应该被记录?我在这里错过了什么?

记者:目前我和System.out.println一起工作.yeah...thats noob :)

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-02-13 05:47:20

您可以手动将记录器添加到您的界面,但是您的记录器将是公共的:

代码语言:javascript
复制
public interface SomeInterface {
    Logger log = LoggerFactory.getLogger(SomIface.class);

    default void action() {
        log.info("TEST");
    }
}
票数 17
EN

Stack Overflow用户

发布于 2019-08-13 06:56:15

目前,Lombok @Slf4j注释在接口上不受支持,但可以像这样绕过它

代码语言:javascript
复制
public interface MyInterface
{
    @Slf4j
    final class LogHolder
    {}

    default void action() {
        LogHolder.log.error("Error TEST");
    }
}
票数 20
EN

Stack Overflow用户

发布于 2018-02-13 11:48:11

日志记录是一个实现细节,所以接口不应该处理它。如果将日志记录视为接口的责任,则会导致几个问题。例如:

  • 如果有多个类实现,则不知道使用哪个类实现,因为它们使用相同的名称进行日志记录。也不可能通过配置中的名称来微调它们的日志级别。
  • 默认方法是公共的,这意味着可以从外部调用它们。对于日志记录方法来说,这不是很理想。
  • 日志方法只会污染接口。如果“Map”接口包含这样的默认方法,人们会怎么说?'logDebug‘左右。它只是混乱,并导致不必要的问题。为了达到预期的目的,接口应该是一个干净的API。

你可以用的是:

  • Lombok也支持的某种代表团。(组成高于继承)
  • 一种面向方面的编程技术。这方面有一些框架,但也可以通过“动态代理”实现同样的目标。这也与接口有关。
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48759353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档