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

十六进制形式的静态字节的Javadoc值,java,javadoc,Java,Javadoc,我在一个类中有一些静态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

我在一个类中有一些
静态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);
}

我的两个问题:

  • 有没有办法以十六进制格式输出静态值 前导的
    0x
    0x0F
    而不是
    15
    )?类似于,
    Input-{@value Integer#toHexString(Foo#TOP#u LEFT_信号)}

  • 我是否可以使值(
    15
    在本例中)不为空 带下划线且未链接到静态字段,但仍使用静态字段的值

  • 我的两个问题都有可能吗

    推理:

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

    第一个问题的解决方法:

    我知道我可以使用以下变通方法来回答第一个问题

    但是我不希望在需要静态字段的字节值时使用
    Byte.decode(String nm)

    由于您的值是常量,也许您可以使用
    {@literal\u text}


    或者,您可以通过扩展类
    Doclet
    ,创建自己的
    自定义Javadoc标记,如前所述。

    为什么要使用常量,但不同时将文档链接到常量?如果该值只是一个示例,您仍然可以编写类似于
    Input的内容—一个合适的值,通常是{@link#TOP#u LEFT_SIGNAL}
    或类似的内容。如果您的值
    15
    与常量没有内在联系,为什么不将文本
    0x0F
    放入您的javadoc?@HonzaZidek更新了问题,包括推理,并更新了javadoc。关于不常见问题的结构良好、格式良好的问题,在询问之前,OP展示了解决问题的尝试和努力+1.感谢您的回答:)-这些值在运行时意义上是常量,但是它们在编译前是可以更改的。此外,将
    0x0F
    放在文档中比
    {@literal 0x0F}
    @JonnyHenly更简单,然后我认为您必须通过
    Doclet
    创建自己的Javadoc
    标记,以处理此特定场景,并将其作为应用程序的一部分进行共享。不幸的是,这对我来说是一个未知的领域,所以我只能向你指出关于这一点的官方文件。是我能找到的最新文档。这是一个实现您自己的Javadoc标记的示例,虽然,它可能会说同样的话,只是在更现代的视觉效果中。哦,哇,我不知道你可以创建自己的Javadoc标记。感谢您提供的信息,我认为创建Javadoc标记可能是最好的方法,这样我就可以在将来的情况下使用它了。@JonnyHenly好吧,说实话,我也不知道(因此我对它一无所知),我只想了想(后来找到了文档,我可以在那里确认它)因为在这种
    generator
    系统中创建自己的标签是很常见的。是的,我想我们都学到了一些东西=P无论如何,很高兴我能帮上忙!
    Input - 15 (TOP_LEFT_SIGNAL)   // 15 is underlined and linked to the static variable
    
    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));
    }