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

如何在Java中将方法标记为不鼓励的?[关闭]

洪宇定
2023-03-14

第一个函数只是从映射中读取并返回值(可以是null或无效),而第二个函数将该值转换为LogLevel,并在没有给出有效值时返回默认值。

因此,我不想让程序员使用泛型的get(),但是在特殊情况下,这个方法很有用,所以我不能仅仅保护它。现在我使用@deprecated,但我认为这不是一个好的解决方案,因为它只是用于将来要删除的方法。(如果我错了,请纠正我,这就是SonarLint告诉我的@deprecated注释)

/**
 * @Deprecated When possible, use the key-specific getter instead
 */
public String get(String key) {
    return values.get(key);
}

public int getLogLevel() {
    return Log.getLogLevel(values.get(LOG_LEVEL), Log.getLogLevel(defaultValues.get(LOG_LEVEL)));
}

共有1个答案

阳文轩
2023-03-14

如果@deprecated不是解决方案,那么只有一个选项。在javadocs中输入一条消息,说明“不鼓励”使用(特殊情况除外)...并希望人们能够阅读javadocs。

定义您自己的自定义注释不会有帮助,因为您无法让您的用户使用能够识别它的注释处理器。

同样,您也不能通过FindBugs、PMD、Sonar等的自定义规则来实现,因为这需要您的用户自定义这些产品的安装。

 类似资料:
  • 问题内容: 关于Java EE开发的第一件事是,我不应该在Java EE容器中生成自己的线程。但是当我考虑它时,我不知道原因。 您能清楚地解释为什么不鼓励这样做吗? 我确信大多数企业应用程序都需要某种异步作业,例如邮件守护程序,空闲会话,清理作业等。 因此,如果确实不应该产生线程,那么在需要时正确的方法是什么? 问题答案: 不建议这样做,因为环境中的所有资源都应由服务器进行管理,并可能由服务器进行

  • 大多数在线来源都表明您可以静态链接glibc,但不鼓励这样做;例如centos包repo: glibc静态包包含用于静态链接的C库静态库。你不需要这些,除非你静态链接,这是非常不鼓励的。 这些消息来源很少(或从未)说明为什么这是个坏主意。

  • 问题内容: 鉴于不建议使用Java EE容器中的生成线程。还会不鼓励在Java EE中使用Java 8并行流 (可能会产生线程)吗? 问题答案: 编辑 请参阅的替代答案。以下可能是计划,但在实践中似乎并没有采用这种方法。 我从评论中提到的lambda-dev邮件列表讨论中读取它的方式:不会阻止生成线程的方式-但在Java EE上下文中不会为您做任何事情。 从链接的讨论中: Java EE并发专家已

  • 问题内容: C#目前发展势头良好。切换(或返回)Java 需要 具备哪些功能? 如果人们发布当前Java版本的变通方法,例如将Nullable包裹在自定义类中,以使其成为更有趣的Wiki,那也将非常有用。 问题答案: 作为.NET / C#开发人员,这里缺少让我烦恼的功能。此列表没有特别的顺序-正如想到的那样: Java库太小。对于普通的事情,我必须在5种竞争性开源产品之间进行选择,因为基本库在很

  • 问题内容: 当通常足以处理方法中的大多数条件失败时,为什么不建议抛出泛型(java.lang.Exception)异常?我知道,如果一个方法可以抛出多种类型的异常,那么抛出异常的特定子类可能会澄清一些处理,但是在一般的失败/成功案例中,我认为Exception的作用已绰绰有余。 问题答案: 问题在于,它也是的超类,其中包含一些不应捕获的内容,因为它表明编程存在问题,而不是由上下文引起的特殊情况。通