是否有类似“quot”的javadoc标记;“必须避免”吗;?

是否有类似“quot”的javadoc标记;“必须避免”吗;?,java,javadoc,Java,Javadoc,我正在写一个有点过分的方法,我想给我的用户一个警告,告诉他“更好地了解你在做什么”,就像@deprecated的行为一样。我可以把这个写为方法名,但我想知道是否有更优雅的方法来实现这一点 公共阶级划分{ public Divison() { } private int up; private int down; public int eval() { return ((int) up/down); } public void setVars(int up, int down) {

我正在写一个有点过分的方法,我想给我的用户一个警告,告诉他“更好地了解你在做什么”,就像@deprecated的行为一样。我可以把这个写为方法名,但我想知道是否有更优雅的方法来实现这一点

公共阶级划分{

public Divison() {
}

private int up;
private int down;


public int eval() {
    return ((int) up/down);
}

public void setVars(int up, int down) {
    this.up = up;
    if (up%down == 0) {
        this.down = down;
    } else {
        throw new ArithmeticException("the values must be divisible");
    } 
}

public void betterKnowWhatYouDoingSetVars(int up, int down) {
    this.up = up;
    this.down = down;
}

}允许外部世界破坏你的行为从来都不是一个好主意,因为你的类变得毫无用处:因为我不能依赖它的内部状态是一致的,所以它只是一袋相互无关的值。为了编写正确的程序,我需要在每次使用该类之前内联复制所有验证逻辑

顺便说一下,您的示例实现可能会处于不一致的状态,即使没有
BetterKnowerYouredoing…
方法,我甚至没有提到多线程。 您可以通过简单地使类不可变并在构造函数中执行该检查来防止这种情况

我认为在走这条路之前,你应该彻底地重新评估你的设计

如果您必须提供此类功能(我很难想象为什么),至少将其包私有化(而不是
公共化
并记录为“危险”)


而且,那些真正知道自己在做什么的人可能永远也不会调用该方法,所以这有点毫无意义……:)

@Deprecated
或javadoc中的粗体警告应该足够了。快速阅读javadoc标记列表不会显示任何内容。你是说,
@no_封装
?不,没有那样的。:)我只需要调用它
setVarsUnsafe(int-up,int-down)
函数名告诉您它是不安全的。这本身应该是一个警告,对吗?这是您的实际类,还是只是一个示例?老实说,如果您觉得必须提醒人们注意API上的尖锐边缘,那么您也许应该重新审视API的设计。(我更关心的是,
setVars
中缺乏失败原子性,而不是您可能最终得到不可分割字段的事实)。