如何在方法上显示javadoc中变量的值?

如何在方法上显示javadoc中变量的值?,java,javadoc,builder,builder-pattern,Java,Javadoc,Builder,Builder Pattern,我有一个生成器模式,其中有一个静态类,如下所示: public final class DataKey { private DataKey(Builder builder) { } public static class Builder { protected int maxCount = 3; // ..some other code here /** * This should be grea

我有一个生成器模式,其中有一个静态类,如下所示:

public final class DataKey {

    private DataKey(Builder builder) {

    }

    public static class Builder {
        protected int maxCount = 3;

        // ..some other code here

        /**
         * This should be greater than 0 and less than equal to {@value Builder#maxCount}.
         * 
         * @param count
         * @throws IllegalArgumentException if count is less than 0 and greater than {@value Builder#maxCount}.
         * @return Builder object
         */         
        public Builder addCount(int count) {
            checkArgument(count > 0 && count < (maxCount + 1),
                    "maxCount should be greater than 0 and less than " + (maxCount + 1));
            this.maxCount = count;
            return this;
        }           
    }
}
公共最终类数据密钥{
专用数据密钥(生成器){
}
公共静态类生成器{
受保护的整数最大计数=3;
//…这里还有其他代码
/**
*该值应大于0且小于等于{@value Builder#maxCount}。
* 
*@param计数
*如果计数小于0且大于{@value Builder#maxCount},则@throws IllegalArgumentException。
*@returnbuilder对象
*/         
公共生成器添加计数(整数计数){
checkArgument(计数>0&&count<(最大计数+1),
“maxCount应大于0且小于”+(maxCount+1));
this.maxCount=count;
归还这个;
}           
}
}

现在我想在我的
addCount
方法上添加一个Javadoc,这样我就可以在上面显示
maxCount
的值,而不必硬编码实际的数字。我尝试使用
{@value Builder#maxCount}
,当我在该方法上查找Javadoc时,它没有显示值3?我在这里做错了什么?

您只能对常量执行此操作。
当您将变量设置为static final时,它将起作用。

javadoc可能要求变量为
final
。可能会将受保护的静态最终int设置为默认值\u MAX\u COUNT=3?我无法将其设置为最终值,因为我正在使用addCount方法再次更改该值。这3个值是我为该变量设置的默认值。当程序运行时,变量的值会发生变化,所以将其设置为该变量是没有意义的,因为文档不会发生变化。这就是为什么我建议引入一个新的静态final变量。然后在构造函数中,您可以执行
this.maxCount=DEFAULT\u MAX\u COUNT
另外,作为旁注,您可能需要重命名
addCount
,因为您实际上并没有添加到count。使用相同的变量
maxCount
检查参数是否在范围内。您是否希望保留第二个变量
count
,以便
count对于非常量的默认值,我能做些什么?不,我不这么认为。你不想让maxCount成为常数有什么原因吗?谢谢Aarjav的建议。如果我将鼠标放在
setMaxCount
方法上,我看不到值3被解析。相反,我看到的是
小于等于{@value Builder#MAX#u MAX_COUNT}。
我刚刚尝试过,它似乎对我有用,你的
MAX_MAX_COUNT
声明是什么样子的?IDE是否在
{@value}
块中自动完成?如果是,请查看
Buil
是否自动完成,或者
Builder\MAX\u MAX
I是否按原样复制。保存文件后,将鼠标悬停在
maxCount
变量或
setMaxCount
方法上时,我看不到
{@value Builder#MAX#MAX#u COUNT}
解析为3。您能检查一下
{@link Builder#MAX#u MAX#u COUNT}
是否得到解析吗?噢,这可能与您的javadoc可见性级别有关。在我的环境中,我将其设置为显示私人和所有的文档。
public static class Builder {
    protected static final int DEFAULT_MAX_COUNT = 3;
    /** count cannot be set to a value higher than this. By default, the value is {@value Builder#DEFAULT_MAX_COUNT}. */
    protected int maxCount = DEFAULT_MAX_COUNT;
    protected int count;

    // ..some other code here

    /**
     * This should be greater than 0 and less than equal to {@link Builder#maxCount}. By default,  {@value Builder#DEFAULT_MAX_COUNT}.
     * 
     * @param count
     * @throws IllegalArgumentException if count is less than 0 and greater than {@link Builder#maxCount}.
     * @return Builder object
     */         
    public Builder setCount(int count) {
        checkArgument(count > 0 && count < (maxCount + 1),
                "count should be greater than 0 and less than " + (maxCount + 1));
        this.count = count;
        return this;
    }

    /** ... */
    public Builder setMaxCount(int maxCount){
        checkArgument(count > 0, "maxCount must be greater than 0"); 
        this.maxCount = maxCount;
    }

    /** ... */
    public int getMaxCount(int maxCount){
         return this.maxCount;
    }

}
public static class Builder {
    protected static final int MAX_MAX_COUNT = 3;
    /** By default, the value is {@value Builder#MAX_MAX_COUNT}. */
    protected int maxCount = MAX_MAX_COUNT;

    // ..some other code here

    /**
     * This should be greater than 0 and less than equal to {@value Builder#MAX_MAX_COUNT}.
     * 
     * @param maxCount
     * @throws IllegalArgumentException if maxCount is less than 0 and greater than {@link Builder#MAX_MAX_COUNT}.
     * @return Builder object
     */         
    public Builder setMaxCount(int maxCount) {
        checkArgument(maxCount > 0 && maxCount < (MAX_MAX_COUNT + 1),
                "count should be greater than 0 and less than " + (MAX_MAX_COUNT + 1));
        this.maxCount = maxCount;
        return this;
    }
}