Java 将类中的方法标记为;不应调用,因为系统已自动执行此操作;?
我正在使用Java1.7。我在.jar中有一个类Java 将类中的方法标记为;不应调用,因为系统已自动执行此操作;?,java,public,Java,Public,我正在使用Java1.7。我在.jar中有一个类“ItemFactory”,它允许其他开发人员创建项对象(项有一个私有构造函数)。工厂需要一些用户输入来创建某些项目。最近,我添加了一些也需要输入的项目,但所有必要的数据都已存在于系统中。我认为让我的“ItemHandler”类自动创建这些项目对开发人员来说会更方便。因此,让他们输入以下内容: ItemFactory factory = new ItemFactory(); Item item = factory.createItem(parame
“ItemFactory”
,它允许其他开发人员创建项对象(项有一个私有构造函数)。工厂需要一些用户输入来创建某些项目。最近,我添加了一些也需要输入的项目,但所有必要的数据都已存在于系统中。我认为让我的“ItemHandler”
类自动创建这些项目对开发人员来说会更方便。因此,让他们输入以下内容:
ItemFactory factory = new ItemFactory();
Item item = factory.createItem(parameter1, parameter2);
ItemHandler handler = new ItemHandler();
handler.doSomethingCool(item);
他们可以这样做:
handler.doSomethingCool()
而doSomethingCool()
方法将自动从工厂生成项目,因为系统中已经存在所有必要的输入
我的问题是facotry类突然有了不应该可见的公共方法。例如,系统本身会自动调用公共方法createItemForSomethingCoolPurposes(),开发人员需要为此担心。他们看到这种方法可能会感到困惑,因为不清楚它的目的是什么。添加注释/文档来表达“不应调用此方法”似乎很愚蠢。我错了吗?这是一个普遍的问题吗?有没有关于它的惯例 只需使用不再是
public
的旧代码重构这些方法即可。如果由于无法使用api控制代码而无法执行此操作,请标记这些方法@Deprecated
,并添加注释,说明在下一版本中将删除该方法。因此,您只需传达删除public
方法的意图,在每个人都重构了他们的代码之后,您就可以删除代码了
这也是JavaSDK的开发人员正在做的事情。它们标记过时的代码
@Deprecated
为新代码添加链接和示例,并在下一版本中删除过时的代码。您可能会将该方法重构为包私有。
有关该主题的更多信息,请阅读有效Java(第三版):
项目15:尽量减少类和成员的可访问性
或者,使用Google的易出错库,您可以使用@DoNotCall对其进行注释,还可以添加@Deprecated注释,以便IDE用户立即得到反馈,认为他们不应该调用该方法。重构什么?该项必须在itemFactory类中创建,因为该项具有私有构造函数,但需要该项的方法位于另一个包中。因此,我不知道如何将getItem方法重构为其他方法。我假设您的用户已经使用了
public
方法。因此,为了将它们更改为private
,例如,您需要使用这些方法重构所有代码。我不能将它们设置为private,它们需要是公共的,这样我自己的类仍然可以访问它们。不需要调用它们的是外部CLSS(不是我的jar的一部分)。类似于受保护,但跨越多个包;(