考虑一个类中的静态方法,我已经使用javadoc记录了它:
/**
* Description here.
*
* @param names - The parameters of the impression request.
* @param ids - An intent object to enrich.
* @param prefix - A prefix.
*/
public static void parse(Map<String, String> names, String ids, String prefix)
...
Run Code Online (Sandbox Code Playgroud)
为了避免重复方法的重载版本中的描述,我想使用javadoc @link:
/**
* Overloaded version with default prefix.
* {@link #<parse(Map<String, String>, String, String)> [Text]}
*/
public static void parse(Map<String, String> names, String ids, String prefix)
Run Code Online (Sandbox Code Playgroud)
这给出了以下警告:
@link:illegal character: "60" in "#parseBtCategories(Map<String, String>,
String, String) Text"
Run Code Online (Sandbox Code Playgroud)
ASCII 60是<方法签名的一部分.它与Map, String, String)坚果一起使用这种符号无法区分两种不同类型的地图.
这似乎是一个已知的错误.有一个很好的解决方法吗?
hay*_*lem 22
该参数化类型不是方法签名的一部分.
Java 使用Type Erasure实现Generics.Type Erasure的概念是泛型类型仅在编译时可用,此时它们被"擦除"; 意味着它们被从类的字节码中删除.因此,它们无法在运行时访问并没有方法签名的一部分.
因此,没有真正的理由让它们成为Javadoc链接签名的一部分,因为您不能使用解析为相同原始类型的泛型类型重载两个方法:源签名中的泛型类型不会存在歧义.
另外,Javadoc支持HTML标记,我认为这可能是它在这里沾沾自喜的另一个原因,但我真的怀疑Javadoc处理工具是如此糟糕的实现.
nuo*_*eri 22
与David Conrad解决方案类似,您可以使用完整签名作为链接描述,使用语法:
{@link class#method(signature) text-to-display}
Run Code Online (Sandbox Code Playgroud)
记住逃生<和>.例如:
{@link #parse(Map, String, String) parse(Map<String, String>, String, String)}
Run Code Online (Sandbox Code Playgroud)