通用类型<p>在Javadoc中转换为段落标记

时间:2015-08-21 09:54:35

标签: java eclipse generics javadoc checkstyle

我有一个带有泛型类型P的Java类。我想在Javadoc中记录它。通常我只是这样做:

/**
 * ...
 * @param <P> the type of publisher
 */

这在实际的Javadoc中表现得很好。但是,CheckStyle警告我需要记录类型P,因为它呈现&lt; P&gt;作为HTML段落。此外,Eclipse格式化程序也将其解释为段落,因此它会混淆格式化。

是否有更好的方法来记录类型为P的类型参数?我知道我可以禁用Eclipse格式化程序,不再自动格式化javadoc,但我宁愿不这样做(并且无论如何都不会解决checkstyle问题)。

我也知道我可以将P重命名为其他东西,但考虑到我在这里使用的泛型类型的数量,它会使事情的可读性降低很多。

4 个答案:

答案 0 :(得分:6)

这是CheckStyle中的错误

official Javadoc documentation表示符号是正确的:

  

类的类型参数示例:

public class EmumReflect {

    public static void main(String[] args) throws Exception {
        f1();
        f2();
    }

    public static void f1() throws ClassNotFoundException, IllegalAccessException, NoSuchFieldException, NoSuchMethodException,
            InvocationTargetException {
        Class<?> forName = Class.forName("snippet.EnumTest");
        Object fOne = forName.getField("ONE").get(null);
        Object fTwo = forName.getField("TWO").get(null);
        Method method = forName.getMethod("hello");
        System.out.println(method.invoke(fOne));
        System.out.println(method.invoke(fTwo));
    }

    public static void f2() throws ClassNotFoundException, IllegalAccessException, NoSuchFieldException, NoSuchMethodException,
            InvocationTargetException {
        Class<?> forNamex = Class.forName("snippet.EnumTest");
        Object fTwo = forNamex.getField("TWO").get(null);
        Class<?> forName = fTwo.getClass();
        Method method = forName.getMethod("hello");
        System.out.println(method.invoke(fTwo));
    }
}

如果您坚持使用此版本的CheckStyle,那么满足这两个约束的唯一方法是将 /** * @param <E> Type of element stored in a list */ 类型参数重命名为其他参数。

答案 1 :(得分:2)

FOR POSTERITY:结果Checkstyle处理得很好。问题是Eclipse格式化程序添加的空格使Checkstyle(合理地)认为Javadoc是不正确的。我还在Eclipse中找到了这个bug的现有错误报告:https://bugs.eclipse.org/bugs/show_bug.cgi?id=121728

答案 2 :(得分:1)

跳过“&lt;”和“&gt;”字符。它们不是类型名称的一部分;它们是语法的一部分。

@param P the type of publisher

(不确定它如何与CheckStyle一起使用,但应该满足Eclipse。)

答案 3 :(得分:1)

我们发现按Ctrl + S保存,然后按Ctrl-Z撤消格式化将正确保存带有01-01-0001标记的Javadoc。