提交 2f520223 编写于 作者: A alanb

8007405: Update java.lang.reflect API to replace SYNTHESIZED with MANDATED

Reviewed-by: darcy
上级 c2372510
......@@ -278,6 +278,10 @@ public abstract class Executable extends AccessibleObject
* this object. Returns an array of length 0 if the executable
* has no parameters.
*
* The parameters of the underlying executable do not necessarily
* have unique names, or names that are legal identifiers in the
* Java programming language (JLS 3.8).
*
* @return an array of {@code Parameter} objects representing all
* the parameters to the executable this object represents
*/
......
......@@ -342,13 +342,13 @@ class Modifier {
static final int SYNTHETIC = 0x00001000;
static final int ANNOTATION = 0x00002000;
static final int ENUM = 0x00004000;
static final int SYNTHESIZED = 0x00010000;
static final int MANDATED = 0x00008000;
static boolean isSynthetic(int mod) {
return (mod & SYNTHETIC) != 0;
}
static boolean isSynthesized(int mod) {
return (mod & SYNTHESIZED) != 0;
static boolean isMandated(int mod) {
return (mod & MANDATED) != 0;
}
/**
......
......@@ -44,7 +44,7 @@ public final class Parameter implements AnnotatedElement {
private final String name;
private final int modifiers;
private final Executable executable;
private int index;
private final int index;
/**
* Package-private constructor for {@code Parameter}.
......@@ -95,9 +95,14 @@ public final class Parameter implements AnnotatedElement {
}
/**
* Returns a string representation of the parameter's modifiers,
* its attributes, its type, its name, and a trailing ... if it is
* a variadic parameter.
* Returns a string describing this parameter. The format is the
* modifiers for the parameter, if any, in canonical order as
* recommended by <cite>The Java&trade; Language
* Specification</cite>, followed by the fully- qualified type of
* the parameter (excluding the last [] if the parameter is
* variable arity), followed by "..." if the parameter is variable
* arity, followed by a space, followed by the name of the
* parameter.
*
* @return A string representation of the parameter and associated
* information.
......@@ -118,7 +123,7 @@ public final class Parameter implements AnnotatedElement {
sb.append(typename);
sb.append(" ");
sb.append(name);
sb.append(getName());
return sb.toString();
}
......@@ -143,11 +148,23 @@ public final class Parameter implements AnnotatedElement {
}
/**
* Returns the name of the parameter represented by this
* {@code Parameter} object.
* Returns the name of the parameter. The names of the parameters
* of a single executable must all the be distinct. When names
* from the originating source are available, they are returned.
* Otherwise, an implementation of this method is free to create a
* name of this parameter, subject to the unquiness requirments.
*/
public String getName() {
return name;
// As per the spec, if a parameter has no name, return argX,
// where x is the index.
//
// Note: spec updates now outlaw empty strings as parameter
// names. The .equals("") is for compatibility with current
// JVM behavior. It may be removed at some point.
if(name == null || name.equals(""))
return "arg" + index;
else
return name;
}
/**
......@@ -190,20 +207,21 @@ public final class Parameter implements AnnotatedElement {
private transient volatile Class<?> parameterClassCache = null;
/**
* Returns {@code true} if this parameter is a synthesized
* construct; returns {@code false} otherwise.
* Returns {@code true} if this parameter is implicitly declared
* in source code; returns {@code false} otherwise.
*
* @return true if and only if this parameter is a synthesized
* construct as defined by
* <cite>The Java&trade; Language Specification</cite>.
* @return true if and only if this parameter is implicitly
* declared as defined by <cite>The Java&trade; Language
* Specification</cite>.
*/
public boolean isSynthesized() {
return Modifier.isSynthesized(getModifiers());
public boolean isImplicit() {
return Modifier.isMandated(getModifiers());
}
/**
* Returns {@code true} if this parameter is a synthetic
* construct; returns {@code false} otherwise.
* Returns {@code true} if this parameter is neither implicitly
* nor explicitly declared in source code; returns {@code false}
* otherwise.
*
* @jls 13.1 The Form of a Binary
* @return true if and only if this parameter is a synthetic
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册