Duplicate :
|
|
Relates :
|
|
Relates :
|
A DESCRIPTION OF THE PROBLEM : When using javadoc with `--override-methods=summary`, then some changes to the signature of the overriding method are ignored and the method is listed under "Methods declared in". Affected changes: - Covariant return type: JDK-8219147 - @Documented annotation on method or its parameters - Changed `throws` clause: - Added unchecked exception - Removed exceptions - Changed parameter name (could be intended) STEPS TO FOLLOW TO REPRODUCE THE PROBLEM : 1. Create the javadoc for the classes below using `--override-methods=summary`. 2. Look at the doc for `Sub` EXPECTED VERSUS ACTUAL BEHAVIOR : EXPECTED - The method `doSomething` is listed under "Method Detail" and the user sees the changes to its signature. ACTUAL - The method `doSomething` is listed under "Methods declared in"; the user does not see any of the changes to its signature. ---------- BEGIN SOURCE ---------- import java.lang.annotation.Documented; @Documented public @interface MyAnnotation { } ----- public interface Parent { /** * Method * * @param a arg * @return value * @throws Exception never */ Parent doSomething(int a) throws Exception; } ----- public interface Sub extends Parent { /* * Changes: * - Return type * - Used @Documented annotation: * - Method * - Parameter * - `throws` clause: * - Not throwing `Exception` * - Throwing `IllegalArgumentException` * - Parameter name (could be intended that change is ignored) */ @Override @MyAnnotation Sub doSomething(@MyAnnotation int aNewName) throws IllegalArgumentException; } ---------- END SOURCE ---------- It appears this also affects changes to the visibility: public class A { /** * Does something */ protected void doSomething() { } } public class B { @Override public void doSomething() { } } ----- The documentation for B does not show "doSomething" under "Method Detail" so the user does not know it is public.
|