尽管存在引用清晰,但Javadoc显示错误"未找到引用"

mar*_*us_ 7 javadoc java-8

使用Java8,javadoc检查变得更加严格.常见的解决方案是禁用严格的javadoc检查.不过,我开始尝试修复某些项目中的错误.
但有一个错误我没有修复.

相应的课程:

package foo;

import com.google.gwt.user.client.ui.TextArea;
[...]

public class MyClass {

  [...]

  /**
   * @see TextArea#getValue()
   */
  public String getValue() {
      [...]
  }

  /**
   * @see TextArea#setValue(String value)
   */
  public void setValue(String value) {
      [...]
  }

  /**
   * @see TextArea#setValue(String, boolean)
   */
  public void setValue(String value, boolean fireEvents) {
      [...]
  }
}
Run Code Online (Sandbox Code Playgroud)

并且错误消息:

[ERROR] ...\MyClass.java:44: error: reference not found
[ERROR] * @see TextArea#setValue(String value)  
[ERROR] ^
[ERROR] ...\MyClass.java:51: error: reference not found
[ERROR] * @see TextArea#setValue(String, boolean)
Run Code Online (Sandbox Code Playgroud)

该错误消息指出它无法找到TextArea在中的Javadoc setValue-方法-但另一方面没有问题找TextAreagetValue-方法.

据我所知,我遵循了如何指定名称以及@see引用.

有线索吗?非常感谢!

mar*_*us_ 7

好的,我现在得到了答案,这有点棘手!

  • TextArea 扩展 ValueBoxBase<String>
  • TextArea#getValue() 没有参数,所以一切都很好
  • 该方法TextArea#setValue(String value)不存在TextArea,它在超类中定义:ValueBoxBase#setValue(Object, boolean).

但它确实存在!"技术上"没有方法setValue(String).这是相当的setValue(Object).javadoc无法自行解决这个问题,或者只是一个bug.

因此,我发现解决这个问题的唯一方法是使用对超类的引用.

/**
 * @see com.google.gwt.user.client.ui.ValueBoxBase#setValue(Object, boolean)
 */
Run Code Online (Sandbox Code Playgroud)