十六进制格式的静态字节的Javadoc值

时间:2015-12-13 00:27:55

标签: java javadoc

我在课程中有一些static final byte个字段:

public static final byte    TOP_LEFT_SIGNAL     = 0x0F;
public static final byte    TOP_CENTER_SIGNAL   = 0x1F;
public static final byte    TOP_RIGHT_SIGNAL    = 0x3F;

我正在编写一些类方法的文档,如下所示:

/**
 * Takes a signal byte and returns an encoded message (byte array).
 * <p>
 * Example:
 * <pre>
 * Input - {@value #TOP_LEFT_SIGNAL} (TOP_LEFT_SIGNAL)
 *
 * Output - [0x00, 0x0F, 0x52, 0x53]
 * </pre>
 *
 * @param b
 *            - signal byte.
 * @return an encoded message (byte array).
 */
public static final byte[] encodeMsg(byte b) {
    return addTail(b);
}

以上文档输出Input - {@value #TOP_LEFT_SIGNAL} (TOP_LEFT_SIGNAL)行,如下所示:

Input - 15 (TOP_LEFT_SIGNAL)   // 15 is underlined and linked to the static variable


我的两个问题:

  1. 有没有办法以十六进制格式输出静态值 领先的0x0x0F代替15)?类似于Input - {@value Integer#toHexString(Foo#TOP_LEFT_SIGNAL)}

  2. 我可以这样做,以便值(此示例中为15)不是 加下划线并且没有链接到静态字段,同时仍然使用静态字段的值?

  3. 我的问题是否可能?

    推理:

    我目前正在将文字字节值(0x0F)放入文档中。我想自动化这个的原因是因为这是一个实用工具类,我已经编写了方法和一些常量。当我编写使用此实用程序类的核心类时,我发现自己需要添加常量但不更改方法。常量被分成不同的字节块,如0x40 - 0x4F,较大的值意味着更重要的含义。因此,当我插入一个比另一个常数重量更小的新常量时,我​​插入常量并将其他常量值向上移动。这使我需要更新每个方法的文档中的每个示例。

    第一个问题的解决方法:

    我知道我可以使用以下解决方法来回答第一个问题。

    public static final String    TOP_LEFT_SIGNAL    = "0x0F";
    
    /**
     * Input - {@value #TOP_LEFT_SIGNAL} (TOP_LEFT_SIGNAL)
     */
    public static final byte[] encodeMsg(String b) {
        return addTail(Byte.decode(b));
    }
    

    但是,每当我需要静态字段的字节值时,我宁愿不使用Byte.decode(String nm)

1 个答案:

答案 0 :(得分:1)

由于您的值常量,您可以使用{@literal literal_text}

或者,您可以通过扩展custom Javadoc tags的类创建自己的Doclet,如in the Doclet documentation所述。