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

Javadoc value of static byte in hex form

我在 class 中有一些 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;

我正在为一些 class 方法编写文档,例如:

/**
 * 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)不是 下划线没有链接到静态字段,同时仍然使用静态字段的值?

我的问题有可能吗?

推理:

我目前将文字字节值 (0x0F) 放入文档中。我想要自动化的原因是因为这是一个实用程序class,我已经为它编写了方法和一些常量。当我编写使用此实用程序 class 的核心 classes 时,我发现自己需要添加常量而不是更改方法。常量被分成不同的字节块,如 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)

由于您的值是 常数,也许您可​​以使用 {@literal literal_text}.

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