Hi Joe, On Jul 15, 2011, at 1:49 AM, David Holmes wrote: > On 14/07/2011 12:21 PM, joe.da...@oracle.com wrote: >> Please code review my JDK 8 changes for >> >> 7007535: (reflect) Please generalize Constructor and Method >> http://cr.openjdk.java.net/~darcy/7007535.3 >> >> To summarize the changes, a new superclass is defined to capture the common >> functionality of java.lang.reflect.Method and java.lang.reflect.Constructor. >> That superclass is named "Executable" along the lines of >> javax.lang.model.ExecutableElement, which models constructors and methods in >> the JSR 269 language model. >> >> Both specification and implementation code are shared. To preserve the right >> @since behavior, it is common that in Method/Constructor the javadoc for a >> method will now look like: >> >> /** >> * {@inheritDoc} >> * @since 1.5 >> */ > > Unless they have fixed/changed javadoc (entirely possible) it used to be that > the above would not cause @throws declarations for unchecked exceptions to be > inherited - you have/had to explicitly repeat them as: > > @throws <exception-type> {@inheritDoc}
Yes, that would seem to be needed for some of the inherited getters of generics info, which specify unchecked exception types. >> Since Executable is being created in JDK 8, it would be incorrect for >> methods in that class to have an @since of 1.5; adding the @since in >> Method/Constructor preserves the right information. In Executable.java, getAnnotation and getDeclaredAnnotations do have "@since 1.5"-- oversight? In Constructor.java and Method.java, getExceptionTypes has "@since 1.5", but that method has existed in those classes since 1.1. In Executable.java: 216 /** 217 * Returns an array of {@code Class} objects that represent the formal 218 * parameter types, in declaration order, of the method 219 * represented by this {@code Method} object. Returns an array of length 220 * 0 if the underlying method takes no parameters. 221 * 222 * @return the parameter types for the method this object 223 * represents At least "{@code Method}" needs to be generalized, and perhaps all occurrences of "method"? Cheers, -- Peter