我在课程中有一些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
我的两个问题:
有没有办法以十六进制格式输出静态值
领先的0x
(0x0F
代替15
)?类似于Input - {@value Integer#toHexString(Foo#TOP_LEFT_SIGNAL)}
我可以这样做,以便值(此示例中为15
)不是
加下划线并且没有链接到静态字段,同时仍然使用静态字段的值?
我的问题是否可能?
推理:
我目前正在将文字字节值(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)
。
答案 0 :(得分:1)
由于您的值常量,您可以使用{@literal literal_text}
。
或者,您可以通过扩展custom Javadoc tags
的类创建自己的Doclet
,如in the Doclet documentation所述。