我有一个带有泛型类型P的Java类。我想在Javadoc中记录它。通常我只是这样做:
/**
* ...
* @param <P> the type of publisher
*/
这在实际的Javadoc中表现得很好。但是,CheckStyle警告我需要记录类型P,因为它呈现&lt; P&gt;作为HTML段落。此外,Eclipse格式化程序也将其解释为段落,因此它会混淆格式化。
是否有更好的方法来记录类型为P的类型参数?我知道我可以禁用Eclipse格式化程序,不再自动格式化javadoc,但我宁愿不这样做(并且无论如何都不会解决checkstyle问题)。
我也知道我可以将P重命名为其他东西,但考虑到我在这里使用的泛型类型的数量,它会使事情的可读性降低很多。
答案 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。