java - 将类中的方法标记为 "should not be invoked because the system already does this automatically"?

标签 java public

我使用的是 Java 1.7。我在 .jar 中有一个类 "ItemFactory" ,它允许其他开发人员创建 Item 对象(item 有一个私有(private)构造函数)。工厂需要一些用户输入来创建某些项目。最近我添加了一些也需要输入的项目,但所有必要的数据已经存在于系统中。我认为开发人员让我的 "ItemHandler" 类自动创建这些项目会更容易。因此,让他们输入以下内容:

ItemFactory factory = new ItemFactory();
Item item = factory.createItem(parameter1, parameter2);
ItemHandler handler = new ItemHandler();
handler.doSomethingCool(item);

他们可以简单地这样做:

handler.doSomethingCool()

并且 doSomethingCool() 方法将从工厂自动生成该项目,因为所有必要的输入都已存在于系统中。

我现在的问题是 facotry 类突然具有不应该可见的公共(public)方法。例如,公共(public)方法 createItemForSomethingCoolPurposes() 是由系统本身自动调用的,开发人员需要担心它。他们看到这个方法可能会感到困惑,因为不清楚它的目的是什么。添加注释/文档来表达“不应调用此方法”似乎很愚蠢。我在这件事上有错吗?这是一个常见问题吗?有相关约定吗?

最佳答案

只需使用不再公共(public)的旧代码重构这些方法。如果您无法这样做,因为您无法使用 api 控制代码,请标记这些方法 @Deprecated 并添加注释,表明在下一个版本中它将被删除。因此,您只需传达您删除 public 方法的意图,然后在每个人重构其代码后,您就可以删除代码。

这也是 java sdk 的开发人员正在做的事情。他们标记过时的代码 @Deprecated 为新代码添加链接和示例,并在下一个版本中删除过时的代码。

关于java - 将类中的方法标记为 "should not be invoked because the system already does this automatically"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24306458/

相关文章:

java - 通过 TCP 和公共(public) IP 连接,无需转发

java - 这段代码中的资源 block 尝试没有阻止这个 IOException 错误?

用于在 Informatica PowerCenter 映射中写入缺失值的 Java 代码

Java : How I can get the type of the generic type at runtime

java - 值没有被填充到 gemfire 缓存中

java - 如何理解java类字面量?

javascript - 在初始化 Javascript 时执行的私有(private)函数中设置公共(public)属性

java - Java中的公共(public)匿名内部类

azure - Windows Azure VPN 公共(public)访问

C# 我可以公开 sqlConnection 并从其他形式引用它吗?