You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by te...@apache.org on 2009/04/22 14:04:11 UTC
svn commit: r767477 [1/5] - in
/harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang:
./ ref/ reflect/
Author: tellison
Date: Wed Apr 22 12:04:10 2009
New Revision: 767477
URL: http://svn.apache.org/viewvc?rev=767477&view=rev
Log:
Apply patch for HARMONY-6164 (Javadocs for luni-kernel)
All documentation formatting / updates except once case, where the patch reorders the enum constants in Thread.State to match the RI.
Modified:
harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/Class.java
harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/ClassLoader.java
harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/Compiler.java
harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/Object.java
harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/Package.java
harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/Runtime.java
harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/StackTraceElement.java
harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/System.java
harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/Thread.java
harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/ThreadGroup.java
harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/Throwable.java
harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/ref/PhantomReference.java
harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/ref/Reference.java
harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/ref/SoftReference.java
harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/ref/WeakReference.java
harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/reflect/AccessibleObject.java
harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/reflect/Array.java
harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/reflect/Constructor.java
harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/reflect/Field.java
harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/reflect/Method.java
Modified: harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/Class.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/Class.java?rev=767477&r1=767476&r2=767477&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/Class.java (original)
+++ harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/Class.java Wed Apr 22 12:04:10 2009
@@ -32,52 +32,71 @@
import java.security.ProtectionDomain;
/**
- * This class must be implemented by the VM vendor. The documented natives must
- * be implemented to support other provided class implementations in this
- * package. An instance of class Class is the in-image representation of a Java
- * class. There are three basic types of Classes
- * <dl>
- * <dt><em>Classes representing object types (classes or interfaces)</em>
- * </dt>
- * <dd>These are Classes which represent the class of a simple instance as
- * found in the class hierarchy. The name of one of these Classes is simply the
- * fully qualified class name of the class or interface that it represents. Its
- * <em>signature</em> is the letter "L", followed by its name, followed by a
- * semi-colon (";").</dd>
- * <dt><em>Classes representing base types</em></dt>
- * <dd>These Classes represent the standard Java base types. Although it is not
- * possible to create new instances of these Classes, they are still useful for
- * providing reflection information, and as the component type of array classes.
- * There is one of these Classes for each base type, and their signatures are:
+ * The in-memory representation of a Java class. This representation serves as
+ * the starting point for querying class-related information, a process usually
+ * called "reflection". There are basically three types of {@code Class}
+ * instances: those representing real classes and interfaces, those representing
+ * primitive types, and those representing array classes.
+ *
+ * <h4>Class instances representing object types (classes or interfaces)</h4>
+ * <p>
+ * These represent an ordinary class or interface as found in the class
+ * hierarchy. The name associated with these {@code Class} instances is simply
+ * the fully qualified class name of the class or interface that it represents.
+ * In addition to this human-readable name, each class is also associated by a
+ * so-called <em>signature</em>, which is the letter "L", followed by the
+ * class name and a semicolon (";"). The signature is what the runtime system
+ * uses internally for identifying the class (for example in a DEX file).
+ * </p>
+ * <h4>Classes representing primitive types</h4>
+ * <p>
+ * These represent the standard Java primitive types and hence share their
+ * names (for example "int" for the {@code int} primitive type). Although it is
+ * not possible to create new instances based on these {@code Class} instances,
+ * they are still useful for providing reflection information, and as the
+ * component type of array classes. There is one {@code Class} instance for each
+ * primitive type, and their signatures are:
+ * </p>
* <ul>
- * <li><code>B</code> representing the <code>byte</code> base type</li>
- * <li><code>S</code> representing the <code>short</code> base type</li>
- * <li><code>I</code> representing the <code>int</code> base type</li>
- * <li><code>J</code> representing the <code>long</code> base type</li>
- * <li><code>F</code> representing the <code>float</code> base type</li>
- * <li><code>D</code> representing the <code>double</code> base type</li>
- * <li><code>C</code> representing the <code>char</code> base type</li>
- * <li><code>Z</code> representing the <code>boolean</code> base type</li>
- * <li><code>V</code> representing void function return values</li>
+ * <li>{@code B} representing the {@code byte} primitive type</li>
+ * <li>{@code S} representing the {@code short} primitive type</li>
+ * <li>{@code I} representing the {@code int} primitive type</li>
+ * <li>{@code J} representing the {@code long} primitive type</li>
+ * <li>{@code F} representing the {@code float} primitive type</li>
+ * <li>{@code D} representing the {@code double} primitive type</li>
+ * <li>{@code C} representing the {@code char} primitive type</li>
+ * <li>{@code Z} representing the {@code boolean} primitive type</li>
+ * <li>{@code V} representing void function return values</li>
* </ul>
- * The name of a Class representing a base type is the keyword which is used to
- * represent the type in Java source code (i.e. "int" for the <code>int</code>
- * base type.</dd>
- * <dt><em>Classes representing array classes</em></dt>
- * <dd>These are Classes which represent the classes of Java arrays. There is
- * one such Class for all array instances of a given arity (number of
- * dimensions) and leaf component type. In this case, the name of the class is
- * one or more left square brackets (one per dimension in the array) followed by
- * the signature ofP the class representing the leaf component type, which can
- * be either an object type or a base type. The signature of a Class
- * representing an array type is the same as its name.</dd>
- * </dl>
- *
+ * <p>
+ * <h4>Classes representing array classes</h4>
+ * <p>
+ * These represent the classes of Java arrays. There is one such {@code Class}
+ * instance per combination of array leaf component type and arity (number of
+ * dimensions). In this case, the name associated with the {@code Class}
+ * consists of one or more left square brackets (one per dimension in the array)
+ * followed by the signature of the class representing the leaf component type,
+ * which can be either an object type or a primitive type. The signature of a
+ * {@code Class} representing an array type is the same as its name. Examples
+ * of array class signatures are:
+ * </p>
+ * <ul>
+ * <li>{@code [I} representing the {@code int[]} type</li>
+ * <li>{@code [Ljava/lang/String;} representing the {@code String[]} type</li>
+ * <li>{@code [[[C} representing the {@code char[][][]} type (three dimensions!)</li>
+ * </ul>
+ *
* @since 1.0
*/
public final class Class<T> implements Serializable, AnnotatedElement,
GenericDeclaration, Type {
+ /*
+ * This class must be implemented by the VM vendor. The documented natives must
+ * be implemented to support other provided class implementations in this
+ * package.
+ */
+
private static final long serialVersionUID = 3206093459760846163L;
private Class() {
@@ -123,17 +142,26 @@
}
/**
- * Answers a Class object which represents the class named by the argument.
- *
- * The name should be the name of a class as described in the class
- * definition of <code>Class</code>, however Classes representing base
- * types can not be found using this method.
- *
+ * Returns a {@code Class} object which represents the class with the
+ * specified name. The name should be the name of a class as described in
+ * the {@link Class class definition}; however, {@code Class}es representing
+ * primitive types can not be found using this method.
+ * <p>
+ * If the class has not been loaded so far, it is being loaded and linked
+ * first. This is done through either the class loader of the calling class
+ * or one of its parent class loaders. The class is also being initialized,
+ * which means that a possible static initializer block is executed.
+ *
* @param className
- * The name of the non-base type class to find
- * @return the named Class
+ * the name of the non-primitive-type class to find.
+ * @return the named {@code Class} instance.
* @throws ClassNotFoundException
- * If the class could not be found
+ * if the requested class can not be found.
+ * @throws LinkageError
+ * if an error occurs during linkage
+ * @throws ExceptionInInitializerError
+ * if an exception occurs during static initialization of a
+ * class.
*/
public static Class<?> forName(String className)
throws ClassNotFoundException {
@@ -141,20 +169,32 @@
}
/**
- * Answers a Class object which represents the class named by the argument.
- * The name should be the name of a class as described in the class
- * definition of <code>Class</code>, however Classes representing base
- * types can not be found using this method. Security rules will be obeyed.
- *
+ * Returns a {@code Class} object which represents the class with the
+ * specified name. The name should be the name of a class as described in
+ * the {@link Class class definition}, however {@code Class}es representing
+ * primitive types can not be found using this method. Security rules will
+ * be obeyed.
+ * <p>
+ * If the class has not been loaded so far, it is being loaded and linked
+ * first. This is done through either the specified class loader or one of
+ * its parent class loaders. The caller can also request the class to be
+ * initialized, which means that a possible static initializer block is
+ * executed.
+ *
* @param className
- * The name of the non-base type class to find
+ * the name of the non-primitive-type class to find.
* @param initializeBoolean
- * A boolean indicating whether the class should be initialized
+ * indicates whether the class should be initialized.
* @param classLoader
- * The class loader to use to load the class
- * @return the named class.
+ * the class loader to use to load the class.
+ * @return the named {@code Class} instance.
* @throws ClassNotFoundException
- * If the class could not be found
+ * if the requested class can not be found.
+ * @throws LinkageError
+ * if an error occurs during linkage
+ * @throws ExceptionInInitializerError
+ * if an exception occurs during static initialization of a
+ * class.
*/
public static Class<?> forName(String className, boolean initializeBoolean,
ClassLoader classLoader) throws ClassNotFoundException {
@@ -162,12 +202,16 @@
}
/**
- * Answers an array containing all public class members of the class which
- * the receiver represents and its super classes and interfaces
- *
- * @return the class' public class members
+ * Returns an array containing {@code Class} objects for all public classes
+ * and interfaces that are members of this class. This includes public
+ * members inherited from super classes and interfaces. If there are no such
+ * class members or if this object represents a primitive type then an array
+ * of length 0 is returned.
+ *
+ * @return the public class members of the class represented by this object.
* @throws SecurityException
- * If member access is not allowed
+ * if a security manager exists and it does not allow member
+ * access.
*/
@SuppressWarnings("unchecked") // According to spec
public Class[] getClasses() {
@@ -185,12 +229,13 @@
}
/**
- * Answers the annotation of the given type. If there is no annotation the
- * method returns <code>null</code>.
- *
+ * Returns the annotation of the given type. If there is no such annotation
+ * then the method returns {@code null}.
+ *
* @param annotationClass
* the annotation type.
- * @return the annotation of the given type, or <code>null</code> if none.
+ * @return the annotation of the given type, or {@code null} if there is no
+ * such annotation.
* @since 1.5
*/
public <A extends Annotation> A getAnnotation(Class<A> annotationClass) {
@@ -198,32 +243,38 @@
}
/**
- * Answers all the annotations of the receiver. If there are no annotations
- * then answers an empty array.
- *
- * @return a copy of the array containing the receiver's annotations.
+ * Returns all the annotations of this class. If there are no annotations
+ * then an empty array is returned.
+ *
+ * @return a copy of the array containing this class' annotations.
+ * @see #getDeclaredAnnotations()
*/
public Annotation[] getAnnotations() {
return new Annotation[0];
}
/**
- * Answers the canonical name of the receiver. If the receiver does not have
- * a canonical name, as defined in the Java Language Specification, then the
- * method returns <code>null</code>.
- *
- * @return the receiver canonical name, or <code>null</code>.
+ * Returns the canonical name of this class. If this class does not have a
+ * canonical name as defined in the Java Language Specification, then the
+ * method returns {@code null}.
+ *
+ * @return this class' canonical name, or {@code null} if it does not have a
+ * canonical name.
*/
public String getCanonicalName() {
return null;
}
/**
- * Answers the class loader which was used to load the class represented by
- * the receiver. Answer null if the class was loaded by the system class
- * loader
- *
- * @return the receiver's class loader or null
+ * Returns the class loader which was used to load the class represented by
+ * this {@code Class}. Implementations are free to return {@code null} for
+ * classes that were loaded by the bootstrap class loader.
+ *
+ * @return the class loader for the represented class.
+ * @throws SecurityException
+ * if a security manager exists and it does not allow accessing
+ * the class loader.
+ * @see ClassLoader
*/
public ClassLoader getClassLoader() {
return null;
@@ -246,28 +297,30 @@
}
/**
- * Answers a Class object which represents the receiver's component type if
- * the receiver represents an array type. Otherwise answers null. The
- * component type of an array type is the type of the elements of the array.
- *
- * @return the component type of the receiver.
+ * Returns a {@code Class} object which represents the component type if
+ * this class represents an array type. Returns {@code null} if this class
+ * does not represent an array type. The component type of an array type is
+ * the type of the elements of the array.
+ *
+ * @return the component type of this class.
*/
public Class<?> getComponentType() {
return null;
}
/**
- * Answers a public Constructor object which represents the constructor
- * described by the arguments.
- *
+ * Returns a {@code Constructor} object which represents the public
+ * constructor matching the specified parameter types.
+ *
* @param parameterTypes
- * the types of the arguments.
- * @return the constructor described by the arguments.
+ * the parameter types of the requested constructor.
+ * @return the constructor described by {@code parameterTypes}.
* @throws NoSuchMethodException
- * if the constructor could not be found.
+ * if the constructor can not be found.
* @throws SecurityException
- * if member access is not allowed
- * @see #getConstructors
+ * if a security manager exists and it does not allow member
+ * access.
+ * @see #getDeclaredConstructor(Class[])
*/
public Constructor<T> getConstructor(Class... parameterTypes)
throws NoSuchMethodException, SecurityException {
@@ -275,56 +328,67 @@
}
/**
- * Answers an array containing Constructor objects describing all
- * constructors which are visible from the current execution context.
- *
- * @return all visible constructors starting from the receiver.
- * @throws SecurityException
- * if member access is not allowed
- * @see #getMethods
+ * Returns an array containing {@code Constructor} objects for all public
+ * constructors for the class represented by this {@code Class}. If there
+ * are no public constructors or if this {@code Class} represents an array
+ * class, a primitive type or void then an empty array is returned.
+ *
+ * @return an array with the public constructors of the class represented by
+ * this {@code Class}.
+ * @throws SecurityException
+ * if a security manager exists and it does not allow member
+ * access.
+ * @see #getDeclaredConstructors()
*/
public Constructor[] getConstructors() throws SecurityException {
return null;
}
/**
- * Answers the annotations that are directly defined on this type.
- * Annotations that are inherited are not included in the result. If there
- * are no annotations, returns an empty array.
- *
- * @return a copy of the array containing the receiver's defined
- * annotations.
- * @since 1.5
+ * Returns the annotations that are directly defined on the class
+ * represented by this {@code Class}. Annotations that are inherited are not
+ * included in the result. If there are no annotations at all, an empty
+ * array is returned.
+ *
+ * @return a copy of the array containing the annotations defined for the
+ * class that this {@code Class} represents.
+ * @see #getAnnotations()
*/
public Annotation[] getDeclaredAnnotations() {
return new Annotation[0];
}
/**
- * Answers an array containing all class members of the class which the
- * receiver represents. Note that some of the fields which are returned may
- * not be visible in the current execution context.
- *
- * @return the class' class members
+ * Returns an array containing {@code Class} objects for all classes and
+ * interfaces that are declared as members of the class which this {@code
+ * Class} represents. If there are no classes or interfaces declared or if
+ * this class represents an array class, a primitive type or void, then an
+ * empty array is returned.
+ *
+ * @return an array with {@code Class} objects for all the classes and
+ * interfaces that are used in member declarations.
* @throws SecurityException
- * if member access is not allowed
+ * if a security manager exists and it does not allow member
+ * access.
*/
public Class[] getDeclaredClasses() throws SecurityException {
return new Class[0];
}
/**
- * Answers a Constructor object which represents the constructor described
- * by the arguments.
- *
+ * Returns a {@code Constructor} object which represents the constructor
+ * matching the specified parameter types that is declared by the class
+ * represented by this {@code Class}.
+ *
* @param parameterTypes
- * the types of the arguments.
- * @return the constructor described by the arguments.
+ * the parameter types of the requested constructor.
+ * @return the constructor described by {@code parameterTypes}.
* @throws NoSuchMethodException
- * if the constructor could not be found.
+ * if the requested constructor can not be found.
* @throws SecurityException
- * if member access is not allowed
- * @see #getConstructors
+ * if a security manager exists and it does not allow member
+ * access.
+ * @see #getConstructor(Class[])
*/
public Constructor<T> getDeclaredConstructor(Class... parameterTypes)
throws NoSuchMethodException, SecurityException {
@@ -332,33 +396,36 @@
}
/**
- * Answers an array containing Constructor objects describing all
- * constructor which are defined by the receiver. Note that some of the
- * fields which are returned may not be visible in the current execution
- * context.
- *
- * @return the receiver's constructors.
- * @throws SecurityException
- * if member access is not allowed
- * @see #getMethods
+ * Returns an array containing {@code Constructor} objects for all
+ * constructors declared in the class represented by this {@code Class}. If
+ * there are no constructors or if this {@code Class} represents an array
+ * class, a primitive type or void then an empty array is returned.
+ *
+ * @return an array with the constructors declared in the class represented
+ * by this {@code Class}.
+ *
+ * @throws SecurityException
+ * if a security manager exists and it does not allow member
+ * access.
+ * @see #getConstructors()
*/
public Constructor[] getDeclaredConstructors() throws SecurityException {
return new Constructor[0];
}
/**
- * Answers a Field object describing the field in the receiver named by the
- * argument. Note that the Constructor may not be visible from the current
- * execution context.
- *
+ * Returns a {@code Field} object for the field with the specified name
+ * which is declared in the class represented by this {@code Class}.
+ *
* @param name
- * The name of the field to look for.
- * @return the field in the receiver named by the argument.
+ * the name of the requested field.
+ * @return the requested field in the class represented by this class.
* @throws NoSuchFieldException
- * if the requested field could not be found
+ * if the requested field can not be found.
* @throws SecurityException
- * if member access is not allowed
- * @see #getDeclaredFields
+ * if a security manager exists and it does not allow member
+ * access.
+ * @see #getField(String)
*/
public Field getDeclaredField(String name) throws NoSuchFieldException,
SecurityException {
@@ -366,36 +433,40 @@
}
/**
- * Answers an array containing Field objects describing all fields which are
- * defined by the receiver. Note that some of the fields which are returned
- * may not be visible in the current execution context.
- *
- * @return the receiver's fields.
- * @throws SecurityException
- * If member access is not allowed
- * @see #getFields
+ * Returns an array containing {@code Field} objects for all fields declared
+ * in the class represented by this {@code Class}. If there are no fields or
+ * if this {@code Class} represents an array class, a primitive type or void
+ * then an empty array is returned.
+ *
+ * @return an array with the fields declared in the class represented by
+ * this class.
+ * @throws SecurityException
+ * if a security manager exists and it does not allow member
+ * access.
+ * @see #getFields()
*/
public Field[] getDeclaredFields() throws SecurityException {
return new Field[0];
}
/**
- * Answers a Method object which represents the method described by the
- * arguments. Note that the associated method may not be visible from the
- * current execution context.
- *
+ * Returns a {@code Method} object which represents the method matching the
+ * specified name and parameter types that is declared by the class
+ * represented by this {@code Class}.
+ *
* @param name
- * the name of the method
+ * the requested method's name.
* @param parameterTypes
- * the types of the arguments.
- * @return the method described by the arguments.
+ * the parameter types of the requested method.
+ * @return the method described by {@code name} and {@code parameterTypes}.
* @throws NoSuchMethodException
- * if the method could not be found.
- * @throws SecurityException
- * If member access is not allowed
+ * if the requested constructor can not be found.
* @throws NullPointerException
- * if the name parameter is <code>null</code>.
- * @see #getMethods
+ * if {@code name} is {@code null}.
+ * @throws SecurityException
+ * if a security manager exists and it does not allow member
+ * access.
+ * @see #getMethod(String, Class[])
*/
public Method getDeclaredMethod(String name, Class... parameterTypes)
throws NoSuchMethodException, SecurityException {
@@ -403,69 +474,69 @@
}
/**
- * Answers an array containing Method objects describing all methods which
- * are defined by the receiver. Note that some of the methods which are
- * returned may not be visible in the current execution context.
- *
- * @throws SecurityException
- * if member access is not allowed
- * @return the receiver's methods.
- * @see #getMethods
+ * Returns an array containing {@code Method} objects for all methods
+ * declared in the class represented by this {@code Class}. If there are no
+ * methods or if this {@code Class} represents an array class, a primitive
+ * type or void then an empty array is returned.
+ *
+ * @return an array with the methods declared in the class represented by
+ * this {@code Class}.
+ * @throws SecurityException
+ * if a security manager exists and it does not allow member
+ * access.
+ * @see #getMethods()
*/
public Method[] getDeclaredMethods() throws SecurityException {
return new Method[0];
}
/**
- * Answers the class which declared the class represented by the receiver.
- * This will return null if the receiver is a member of another class.
- *
- * @return the declaring class of the receiver.
+ * Returns the declaring {@code Class} of this {@code Class}. Returns
+ * {@code null} if the class is not a member of another class or if this
+ * {@code Class} represents an array class, a primitive type or void.
+ *
+ * @return the declaring {@code Class} or {@code null}.
*/
public Class<?> getDeclaringClass() {
return null;
}
/**
- * Answers the class that directly encloses the receiver. If there is no
- * enclosing class the method returns <code>null</code>.
- *
- * @return the enclosing class or <code>null</code>.
+ * Returns the enclosing {@code Class} of this {@code Class}. If there is no
+ * enclosing class the method returns {@code null}.
+ *
+ * @return the enclosing {@code Class} or {@code null}.
*/
public Class<?> getEnclosingClass() {
return null;
}
/**
- * Gets the {@link Constructor}, which encloses the declaration of this
- * class, if it is an anonymous or local/automatic class, otherwise
- * <code>null</code>.
- *
- * @return A {@link Constructor} instance or <code>null</code>.
- * @since 1.5
+ * Gets the enclosing {@code Constructor} of this {@code Class}, if it is an
+ * anonymous or local/automatic class; otherwise {@code null}.
+ *
+ * @return the enclosing {@code Constructor} instance or {@code null}.
*/
public Constructor<?> getEnclosingConstructor() {
return null;
}
/**
- * Gets the {@link Method}, which encloses the declaration of this class,
- * if it is an anonymous or local/automatic class, otherwise
- * <code>null</code>.
- *
- * @return A {@link Method} instance or <code>null</code>.
- * @since 1.5
+ * Gets the enclosing {@code Method} of this {@code Class}, if it is an
+ * anonymous or local/automatic class; otherwise {@code null}.
+ *
+ * @return the enclosing {@code Method} instance or {@code null}.
*/
public Method getEnclosingMethod() {
return null;
}
/**
- * Gets the <code>enum</code> constants/fields associated with this class
- * if it is an {@linkplain #isEnum() enum}, otherwise <code>null</code>.
- *
- * @return An array of the <code>enum</code> constants for this class or
- * <code>null</code>.
+ * Gets the {@code enum} constants associated with this {@code Class}.
+ * Returns {@code null} if this {@code Class} does not represent an {@code
+ * enum} type.
+ *
+ * @return an array with the {@code enum} constants or {@code null}.
* @since 1.5
*/
public T[] getEnumConstants() {
@@ -473,17 +544,20 @@
}
/**
- * Answers a Field object describing the field in the receiver named by the
- * argument which must be visible from the current execution context.
- *
+ * Returns a {@code Field} object which represents the public field with the
+ * specified name. This method first searches the class C represented by
+ * this {@code Class}, then the interfaces implemented by C and finally the
+ * superclasses of C.
+ *
* @param name
- * The name of the field to look for.
- * @return the field in the receiver named by the argument.
+ * the name of the requested field.
+ * @return the public field specified by {@code name}.
* @throws NoSuchFieldException
- * If the given field does not exist
+ * if the field can not be found.
* @throws SecurityException
- * If access is denied
- * @see #getDeclaredFields
+ * if a security manager exists and it does not allow member
+ * access.
+ * @see #getDeclaredField(String)
*/
public Field getField(String name) throws NoSuchFieldException,
SecurityException {
@@ -491,33 +565,43 @@
}
/**
- * Answers an array containing Field objects describing all fields which are
- * visible from the current execution context.
- *
- * @return all visible fields starting from the receiver.
- * @throws SecurityException
- * If member access is not allowed
- * @see #getDeclaredFields
+ * Returns an array containing {@code Field} objects for all public fields
+ * for the class C represented by this {@code Class}. Fields may be declared
+ * in C, the interfaces it implements or in the superclasses of C. The
+ * elements in the returned array are in no particular order.
+ * <p>
+ * If there are no public fields or if this class represents an array class,
+ * a primitive type or {@code void} then an empty array is returned.
+ * </p>
+ *
+ * @return an array with the public fields of the class represented by this
+ * {@code Class}.
+ * @throws SecurityException
+ * if a security manager exists and it does not allow member
+ * access.
+ * @see #getDeclaredFields()
*/
public Field[] getFields() throws SecurityException {
return new Field[0];
}
/**
- * Gets the {@link Type types} of the interface that this class directly
- * implements.
- *
- * @return An array of {@link Type} instances.
- * @since 1.5
+ * Gets the {@link Type}s of the interfaces that this {@code Class} directly
+ * implements. If the {@code Class} represents a primitive type or {@code
+ * void} then an empty array is returned.
+ *
+ * @return an array of {@link Type} instances directly implemented by the
+ * class represented by this {@code class}.
*/
public Type[] getGenericInterfaces() {
return new Type[0];
}
/**
- * Gets the {@link Type} that represents the super class of this class.
- *
- * @return An instance of {@link Type}
+ * Gets the {@code Type} that represents the superclass of this {@code
+ * class}.
+ *
+ * @return an instance of {@code Type} representing the superclass.
* @since 1.5
*/
public Type getGenericSuperclass() {
@@ -525,29 +609,37 @@
}
/**
- * Answers an array of Class objects which match the interfaces specified in
- * the receiver classes <code>implements</code> declaration
- *
- * @return Class[] the interfaces the receiver claims to implement.
+ * Returns an array of {@code Class} objects that match the interfaces
+ * specified in the {@code implements} declaration of the class represented
+ * by this {@code Class}. The order of the elements in the array is
+ * identical to the order in the original class declaration. If the class
+ * does not implement any interfaces, an empty array is returned.
+ *
+ * @return an array with the interfaces of the class represented by this
+ * class.
*/
public Class[] getInterfaces() {
return new Class[0];
}
/**
- * Answers a Method object which represents the method described by the
- * arguments.
- *
+ * Returns a {@code Method} object which represents the public method with
+ * the specified name and parameter types. This method first searches the
+ * class C represented by this {@code Class}, then the superclasses of C and
+ * finally the interfaces implemented by C and finally the superclasses of C
+ * for a method with matching name.
+ *
* @param name
- * String the name of the method
+ * the requested method's name.
* @param parameterTypes
- * Class[] the types of the arguments.
- * @return Method the method described by the arguments.
+ * the parameter types of the requested method.
+ * @return the public field specified by {@code name}.
* @throws NoSuchMethodException
- * if the method could not be found.
+ * if the method can not be found.
* @throws SecurityException
- * if member access is not allowed
- * @see #getMethods
+ * if a security manager exists and it does not allow member
+ * access.
+ * @see #getDeclaredMethod(String, Class[])
*/
public Method getMethod(String name, Class... parameterTypes)
throws NoSuchMethodException, SecurityException {
@@ -555,62 +647,77 @@
}
/**
- * Answers an array containing Method objects describing all methods which
- * are visible from the current execution context.
- *
- * @return Method[] all visible methods starting from the receiver.
- * @throws SecurityException
- * if member access is not allowed
- * @see #getDeclaredMethods
+ * Returns an array containing {@code Method} objects for all public methods
+ * for the class C represented by this {@code Class}. Methods may be
+ * declared in C, the interfaces it implements or in the superclasses of C.
+ * The elements in the returned array are in no particular order.
+ * <p>
+ * If there are no public methods or if this {@code Class} represents a
+ * primitive type or {@code void} then an empty array is returned.
+ * </p>
+ *
+ * @return an array with the methods of the class represented by this
+ * {@code Class}.
+ * @throws SecurityException
+ * if a security manager exists and it does not allow member
+ * access.
+ * @see #getDeclaredMethods()
*/
public Method[] getMethods() throws SecurityException {
return new Method[0];
}
/**
- * Answers an integer which which is the receiver's modifiers. Note that the
- * constants which describe the bits which are returned are implemented in
- * class {@link Modifier} which may not be available on the target.
- *
- * @return the receiver's modifiers
+ * Returns an integer that represents the modifiers of the class represented
+ * by this {@code Class}. The returned value is a combination of bits
+ * defined by constants in the {@link Modifier} class.
+ *
+ * @return the modifiers of the class represented by this {@code Class}.
*/
public int getModifiers() {
return 0;
}
/**
- * Answers the name of the class which the receiver represents. For a
+ * Returns the name of the class represented by this {@code Class}. For a
* description of the format which is used, see the class definition of
- * <code>Class</code>.
- *
- * @return the receiver's name.
+ * {@link Class}.
+ *
+ * @return the name of the class represented by this {@code Class}.
*/
public String getName() {
return null;
}
/**
- * Answers the simple name of the receiver as defined in the source code. If
- * there is no name (the class is anonymous) returns an empty string, and if
- * the receiver is an array returns the name of the underlying type with
- * square braces appended (e.g. <code>"Integer[]"</code>).
- *
- * @return the simple name of the receiver.
+ * Returns the simple name of the class represented by this {@code Class} as
+ * defined in the source code. If there is no name (that is, the class is
+ * anonymous) then an empty string is returned. If the receiver is an array
+ * then the name of the underlying type with square braces appended (for
+ * example {@code "Integer[]"}) is returned.
+ *
+ * @return the simple name of the class represented by this {@code Class}.
*/
public String getSimpleName() {
return null;
}
/**
- * Answers the ProtectionDomain of the receiver.
- *
- * Note: In order to conserve space in embedded targets, we allow this
- * method to answer null for classes in the system protection domain (i.e.
- * for system classes). System classes are always given full permissions
- * (i.e. AllPermission). This is not changeable via the
- * java.security.Policy.
- *
- * @return ProtectionDomain the receiver's ProtectionDomain.
+ * Returns the {@code ProtectionDomain} of the class represented by this
+ * class.
+ * <p>
+ * Note: In order to conserve space in an embedded target like Android, we
+ * allow this method to return {@code null} for classes in the system
+ * protection domain (that is, for system classes). System classes are
+ * always given full permissions (that is, AllPermission). This can not be
+ * changed through the {@link java.security.Policy} class.
+ * </p>
+ *
+ * @return the {@code ProtectionDomain} of the class represented by this
+ * class.
+ * @throws SecurityException
+ * if a security manager exists and it does not allow member
+ * access.
*/
public ProtectionDomain getProtectionDomain() {
return null;
@@ -628,13 +735,14 @@
}
/**
- * Answers a read-only stream on the contents of the resource specified by
- * resName. The mapping between the resource name and the stream is managed
- * by the class' class loader.
- *
+ * Returns the URL of the resource specified by {@code resName}. The mapping
+ * between the resource name and the URL is managed by the class' class
+ * loader.
+ *
* @param resName
* the name of the resource.
- * @return a stream on the resource.
+ * @return the requested resource's {@code URL} object or {@code null} if
+ * the resource can not be found.
* @see ClassLoader
*/
public URL getResource(String resName) {
@@ -642,13 +750,14 @@
}
/**
- * Answers a read-only stream on the contents of the resource specified by
- * resName. The mapping between the resource name and the stream is managed
- * by the class' class loader.
- *
+ * Returns a read-only stream for the contents of the resource specified by
+ * {@code resName}. The mapping between the resource name and the stream is
+ * managed by the class' class loader.
+ *
* @param resName
* the name of the resource.
- * @return a stream on the resource.
+ * @return a stream for the requested resource or {@code null} if no
+ * resource with the specified name can be found.
* @see ClassLoader
*/
public InputStream getResourceAsStream(String resName) {
@@ -656,31 +765,36 @@
}
/**
- * Answers the signers for the class represented by the receiver, or null if
- * there are no signers.
- *
- * @return the signers of the receiver.
- * @see #getMethods
+ * Returns the signers for the class represented by this {@code Class} or
+ * {@code null} if either there are no signers or this {@code Class}
+ * represents a primitive type or void.
+ *
+ * @return the signers of the class represented by this {@code Class}.
*/
public Object[] getSigners() {
return new Object[0];
}
/**
- * Answers the Class which represents the receiver's superclass. For Classes
- * which represent base types, interfaces, and for {@link Object} the method
- * answers null.
- *
- * @return the receiver's superclass.
+ * Returns the {@code Class} object which represents the superclass of the
+ * class represented by this {@code Class}. If this {@code Class} represents
+ * the {@code Object} class, a primitive type, an interface or void then the
+ * method returns {@code null}. If this {@code Class} represents an array
+ * class then the {@code Object} class is returned.
+ *
+ * @return the superclass of the class represented by this {@code Class}.
*/
public Class<? super T> getSuperclass() {
return null;
}
/**
- * Gets the type variables associated with this class.
- *
- * @return An array of {@link TypeVariable} instances.
+ * Returns an array containing {@code TypeVariable} objects for type
+ * variables declared by the generic class represented by this {@code
+ * Class}. Returns an empty array if the class is not generic.
+ *
+ * @return an array with the type variables of the class represented by this
+ * class.
* @since 1.5
*/
@SuppressWarnings("unchecked")
@@ -689,23 +803,23 @@
}
/**
- * Indicates whether or not this class is an annotation.
- *
- * @return A value of <code>true</code> if this class is an annotation,
- * otherwise <code>false</code>.
- * @since 1.5
+ * Indicates whether this {@code Class} represents an annotation class.
+ *
+ * @return {@code true} if this {@code Class} represents an annotation
+ * class; {@code false} otherwise.
*/
public boolean isAnnotation() {
return false;
}
/**
- * Indicates whether or not the given annotation is present for this class.
- *
+ * Indicates whether the specified annotation is present for the class
+ * represented by this {@code Class}.
+ *
* @param annotationClass
- * The annotation to look for in this class.
- * @return A value of <code>true</code> if the annotation is present,
- * otherwise <code>false</code>.
+ * the annotation to look for.
+ * @return {@code true} if the class represented by this {@code Class} is
+ * annotated with {@code annotationClass}; {@code false} otherwise.
* @since 1.5
*/
public boolean isAnnotationPresent(
@@ -714,10 +828,11 @@
}
/**
- * Indicates whether or not this class was anonymously declared.
- *
- * @return A value of <code>true</code> if this class is anonymous,
- * otherwise <code>false</code>.
+ * Indicates whether the class represented by this {@code Class} is
+ * anonymously declared.
+ *
+ * @return {@code true} if the class represented by this {@code Class} is
+ * anonymous; {@code false} otherwise.
* @since 1.5
*/
public boolean isAnonymousClass() {
@@ -725,185 +840,188 @@
}
/**
- * Answers true if the receiver represents an array class.
- *
- * @return <code>true</code> if the receiver represents an array class
- * <code>false</code> if it does not represent an array class
+ * Indicates whether the class represented by this {@code Class} is an array
+ * class.
+ *
+ * @return {@code true} if the class represented by this {@code Class} is an
+ * array class; {@code false} otherwise.
*/
public boolean isArray() {
return false;
}
/**
- * Answers true if the type represented by the argument can be converted via
- * an identity conversion or a widening reference conversion (i.e. if either
- * the receiver or the argument represent primitive types, only the identity
- * conversion applies).
- *
- * @return <code>true</code> the argument can be assigned into the
- * receiver <code>false</code> the argument cannot be assigned
- * into the receiver
+ * Indicates whether the specified class type can be converted to the class
+ * represented by this {@code Class}. Conversion may be done via an identity
+ * conversion or a widening reference conversion (if either the receiver or
+ * the argument represent primitive types, only the identity conversion
+ * applies).
+ *
* @param cls
- * Class the class to test
+ * the class to check.
+ * @return {@code true} if {@code cls} can be converted to the class
+ * represented by this {@code Class}; {@code false} otherwise.
* @throws NullPointerException
- * if the parameter is null
+ * if {@code cls} is {@code null}.
*/
public boolean isAssignableFrom(Class<?> cls) {
return false;
}
/**
- * Indicates whether or not this class is an <code>enum</code>.
- *
- * @return A value of <code>true</code> if this class is an {@link Enum},
- * otherwise <code>false</code>.
- * @since 1.5
+ * Indicates whether the class represented by this {@code Class} is an
+ * {@code enum}.
+ *
+ * @return {@code true} if the class represented by this {@code Class} is an
+ * {@code enum}; {@code false} otherwise.
*/
public boolean isEnum() {
return false;
}
/**
- * Answers true if the argument is non-null and can be cast to the type of
- * the receiver. This is the runtime version of the <code>instanceof</code>
- * operator.
- *
- * @return <code>true</code> the argument can be cast to the type of the
- * receiver <code>false</code> the argument is null or cannot be
- * cast to the type of the receiver
+ * Indicates whether the specified object can be cast to the class
+ * represented by this {@code Class}. This is the runtime version of the
+ * {@code instanceof} operator.
+ *
* @param object
- * Object the object to test
+ * the object to check.
+ * @return {@code true} if {@code object} can be cast to the type
+ * represented by this {@code Class}; {@code false} if {@code
+ * object} is {@code null} or cannot be cast.
*/
public boolean isInstance(Object object) {
return false;
}
/**
- * Answers true if the receiver represents an interface.
- *
- * @return <code>true</code> if the receiver represents an interface
- * <code>false</code> if it does not represent an interface
+ * Indicates whether this {@code Class} represents an interface.
+ *
+ * @return {@code true} if this {@code Class} represents an interface;
+ * {@code false} otherwise.
*/
public boolean isInterface() {
return false;
}
/**
- * Answers whether the receiver is defined locally.
- *
- * @return <code>true</code> if the class is local, otherwise
- * <code>false</code>.
+ * Indicates whether the class represented by this {@code Class} is defined
+ * locally.
+ *
+ * @return {@code true} if the class represented by this {@code Class} is
+ * defined locally; {@code false} otherwise.
*/
public boolean isLocalClass() {
return false;
}
/**
- * Answers whether the receiver is a member class.
- *
- * @return <code>true</code> if the class is a member class, otherwise
- * <code>false</code>.
+ * Indicates whether the class represented by this {@code Class} is a member
+ * class.
+ *
+ * @return {@code true} if the class represented by this {@code Class} is a
+ * member class; {@code false} otherwise.
*/
public boolean isMemberClass() {
return false;
}
/**
- * Answers true if the receiver represents a base type.
- *
- * @return <code>true</code> if the receiver represents a base type
- * <code>false</code> if it does not represent a base type
+ * Indicates whether this {@code Class} represents a primitive type.
+ *
+ * @return {@code true} if this {@code Class} represents a primitive type;
+ * {@code false} otherwise.
*/
public boolean isPrimitive() {
return false;
}
/**
- * Answers whether the receiver is a synthetic type.
- *
- * @return <code>true</code> if the receiver is a synthetic type and
- * <code>false</code> otherwise.
+ * Indicates whether this {@code Class} represents a synthetic type.
+ *
+ * @return {@code true} if this {@code Class} represents a synthetic type;
+ * {@code false} otherwise.
*/
public boolean isSynthetic() {
return false;
}
/**
- * Answers a new instance of the class represented by the receiver, created
- * by invoking the default (i.e. zero-argument) constructor. If there is no
- * such constructor, or if the creation fails (either because of a lack of
- * available memory or because an exception is thrown by the constructor),
- * an InstantiationException is thrown. If the default constructor exists,
- * but is not accessible from the context where this message is sent, an
- * IllegalAccessException is thrown.
- *
- * @return a new instance of the class represented by the receiver.
+ * Returns a new instance of the class represented by this {@code Class},
+ * created by invoking the default (that is, zero-argument) constructor. If
+ * there is no such constructor, or if the creation fails (either because of
+ * a lack of available memory or because an exception is thrown by the
+ * constructor), an {@code InstantiationException} is thrown. If the default
+ * constructor exists but is not accessible from the context where this
+ * method is invoked, an {@code IllegalAccessException} is thrown.
+ *
+ * @return a new instance of the class represented by this {@code Class}.
* @throws IllegalAccessException
- * if the constructor is not visible to the sender.
+ * if the default constructor is not visible.
* @throws InstantiationException
- * if the instance could not be created.
+ * if the instance can not be created.
+ * @throws SecurityException
+ * if a security manager exists and it does not allow creating
+ * new instances.
*/
public T newInstance() throws IllegalAccessException,
InstantiationException {
return null;
}
- /**
- * Answers a string containing a concise, human-readable description of the
- * receiver.
- *
- * @return a printable representation for the receiver.
- */
@Override
public String toString() {
return null;
}
/**
- * Returns the Package of which this class is a member. A class has a
- * Package if it was loaded from a SecureClassLoader
- *
- * @return Package the Package of which this class is a member or null
+ * Returns the {@code Package} of which the class represented by this
+ * {@code Class} is a member. Returns {@code null} if no {@code Package}
+ * object was created by the class loader of the class.
+ *
+ * @return Package the {@code Package} of which this {@code Class} is a
+ * member or {@code null}.
*/
public Package getPackage() {
return null;
}
/**
- * Returns the assertion status for this class. Assertion is
- * enabled/disabled based on class loader default, package or class default
- * at runtime
- *
- * @return the assertion status for this class
+ * Returns the assertion status for the class represented by this {@code
+ * Class}. Assertion is enabled / disabled based on the class loader,
+ * package or class default at runtime.
+ *
+ * @return the assertion status for the class represented by this {@code
+ * Class}.
*/
public boolean desiredAssertionStatus() {
return false;
}
/**
- * Casts the receiver to a subclass of the given class. If successful
- * answers the receiver, otherwise if the cast cannot be made throws a
- * <code>ClassCastException</code>.
- *
+ * Casts this {@code Class} to represent a subclass of the specified class.
+ * If successful, this {@code Class} is returned; otherwise a {@code
+ * ClassCastException} is thrown.
+ *
* @param clazz
* the required type.
- * @return this class cast as a subclass of the given type.
+ * @return this {@code Class} cast as a subclass of the given type.
* @throws ClassCastException
- * if the class cannot be cast to the given type.
+ * if this {@code Class} cannot be cast to the specified type.
*/
public <U> Class<? extends U> asSubclass(Class<U> clazz) {
return null;
}
/**
- * Cast the given object to the type <code>T</code>. If the object is
- * <code>null</code> the result is also <code>null</code>.
- *
+ * Casts the specified object to the type represented by this {@code Class}.
+ * If the object is {@code null} then the result is also {@code null}.
+ *
* @param obj
- * the object to cast
- * @return The object that has been cast.
+ * the object to cast.
+ * @return the object that has been cast.
* @throws ClassCastException
- * if the object cannot be cast to the given type.
+ * if the object cannot be cast to the specified type.
*/
public T cast(Object obj) {
return null;