JavaDoc方法签名缩进

时间:2011-07-20 17:51:19

标签: java newline javadoc indentation code-formatting

我倾向于在代码中使用大量换行符来保持大部分在80个字符的行宽内。虽然有些人可能觉得这完全没用,但我喜欢在垂直旋转的屏幕上编辑代码,并且在做差异时也喜欢这种狭窄的布局。无论偏好如何,这确实在生成JavaDoc时产生了意想不到的结果,更具体地说是方法签名。

假设我有以下内容:

public static 
        <C extends AcmeConstants, 
        B extends AcmeBundle<C>, 
        R extends AcmeBundleProvider<C, B>> //Type params
        R //Return type
        newInstance(final Class<R> spiClass, final String implementationClassName) 
        throws AcmeException {

    return newInstance(spiClass, 
                       implementationClassName, 
                       Thread.currentThread().getContextClassLoader());
}

除了Crazy类型参数之外,你可以看到我正在调整类型参数,返回类型,方法声明和throws子句以保持一些不同的东西。同样,您可能会发现这种迷人或彻头彻尾的迟钝,但在生成JavaDoc时会出现问题。我得到的是文档,其中方法参数每个都在一个新行上并对齐,即使我没有这样做。这不是一个真正的问题,虽然奇怪的是它将类型参数声明变成了一行。然而,真正的踢球者是它然后将throws子句放在一个新的行上,原始缩进!

看看我的意思:

public static <C extends AcmeConstants,B extends AcmeBundle<C>,R extends AcmeBundleProvider<C,B>> R newInstance(Class<R> spiClass,
                                                                                                                 String implementationClassName)
                                                               throws AcmeException

这与生成的JavaDoc中的内容完全相同。有没有办法让它停止这样做并规范化空白或其他什么?现在我必须在更改我的代码格式或有奇怪的JavaDoc之间做出选择。

顺便说一句,我使用Maven JavaDoc插件生成,但使用不同方法时结果相同。

1 个答案:

答案 0 :(得分:4)

Javadoc由Doclet生成,只能查看代码的解析版本。它将throws子句与原始源类似地对齐是巧合。您看到的签名实际上是从框架交给Doclet的MethodDoc生成的。如果不更改Doclet代码,则无法更改输出格式。没有什么能阻止你对它进行后期处理,但我怀疑它是值得的。

BTW,互联网上的替代doclet是available,可能更适合定制。