public final class Class<T> extends Object implements Serializable, AnnotatedElement, GenericDeclaration, Type
Class
instances: those representing real classes and interfaces, those representing
primitive types, and those representing array classes.
These represent an ordinary class or interface as found in the class
hierarchy. The name associated with these 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 descriptor, which is the letter "L", followed by the
class name and a semicolon (";"). The descriptor is what the runtime system
uses internally for identifying the class (for example in a DEX file).
These represent the standard Java primitive types and hence share their
names (for example "int" for the int primitive type). Although it is
not possible to create new instances based on these Class instances,
they are still useful for providing reflection information, and as the
component type of array classes. There is one Class instance for each
primitive type, and their descriptors are:
B representing the byte primitive typeS representing the short primitive typeI representing the int primitive typeJ representing the long primitive typeF representing the float primitive typeD representing the double primitive typeC representing the char primitive typeZ representing the boolean primitive typeV representing void function return values
These represent the classes of Java arrays. There is one such Class
instance per combination of array leaf component type and arity (number of
dimensions). In this case, the name associated with the Class
consists of one or more left square brackets (one per dimension in the array)
followed by the descriptor of the class representing the leaf component type,
which can be either an object type or a primitive type. The descriptor of a
Class representing an array type is the same as its name. Examples
of array class descriptors are:
[I representing the int[] type[Ljava/lang/String; representing the String[] type[[[C representing the char[][][] type (three dimensions!)| Modifier and Type | Method and Description |
|---|---|
<U> Class<? extends U> |
asSubclass(Class<U> c)
Casts this
Class to represent a subclass of the given class. |
T |
cast(Object obj)
Casts the given object to the type represented by this
Class. |
boolean |
desiredAssertionStatus()
Returns the assertion status for the class represented by this
Class. |
static Class<?> |
forName(String className)
Returns a
Class object which represents the class with
the given name. |
static Class<?> |
forName(String className,
boolean shouldInitialize,
ClassLoader classLoader)
Returns a
Class object which represents the class with
the given name. |
<A extends Annotation> |
getAnnotation(Class<A> annotationType)
Returns, for this element, the annotation with the specified type, or
null if no annotation with the specified type is present
(including inherited annotations). |
Annotation[] |
getAnnotations()
Returns an array containing all the annotations of this class.
|
String |
getCanonicalName()
Returns the canonical name of this class.
|
Class<?>[] |
getClasses()
Returns an array containing
Class objects for all
public classes, interfaces, enums and annotations that are
members of this class and its superclasses. |
ClassLoader |
getClassLoader()
Returns the class loader which was used to load the class represented by
this
Class. |
Class<?> |
getComponentType()
Returns a
Class object which represents the component type if
this class represents an array type. |
Constructor<T> |
getConstructor(Class<?>... parameterTypes)
Returns a
Constructor object which represents the public
constructor matching the given parameter types. |
Constructor<?>[] |
getConstructors()
Returns an array containing
Constructor objects for all public
constructors for this Class. |
Annotation[] |
getDeclaredAnnotations()
Returns the annotations that are directly defined on the class
represented by this
Class. |
Class<?>[] |
getDeclaredClasses()
Returns an array containing
Class objects for all classes,
interfaces, enums and annotations that are members of this class. |
Constructor<T> |
getDeclaredConstructor(Class<?>... parameterTypes)
Returns a
Constructor object which represents the constructor
matching the specified parameter types that is declared by the class
represented by this Class. |
Constructor<?>[] |
getDeclaredConstructors()
Returns an array containing
Constructor objects for all
constructors declared in the class represented by this Class. |
Field |
getDeclaredField(String name)
Returns a
Field object for the field with the given name
which is declared in the class represented by this Class. |
Field[] |
getDeclaredFields()
Returns an array containing
Field objects for all fields declared
in the class represented by this Class. |
Field[] |
getDeclaredFieldsUnchecked(boolean publicOnly)
Populates a list of fields without performing any security or type
resolution checks first.
|
Method |
getDeclaredMethod(String name,
Class<?>... parameterTypes)
Returns a
Method object which represents the method matching the
specified name and parameter types that is declared by the class
represented by this Class. |
Method[] |
getDeclaredMethods()
Returns an array containing
Method objects for all methods
declared in the class represented by this Class. |
Method[] |
getDeclaredMethodsUnchecked(boolean publicOnly)
Populates a list of methods without performing any security or type
resolution checks first.
|
Class<?> |
getDeclaringClass()
Returns the class that this class is a member of, or
null if this
class is a top-level class, a primitive, an array, or defined within a
method or constructor. |
Dex |
getDex()
Returns the dex file from which this class was loaded.
|
int |
getDexAnnotationDirectoryOffset()
The annotation directory offset of this class in its own Dex, or 0 if it
is unknown.
|
String |
getDexCacheString(Dex dex,
int dexStringIndex)
Returns a string from the dex cache, computing the string from the dex file if necessary.
|
Class<?> |
getDexCacheType(Dex dex,
int dexTypeIndex)
Returns a resolved type from the dex cache, computing the type from the dex file if
necessary.
|
int |
getDexClassDefIndex()
The class def of this class in its own Dex, or -1 if there is no class def.
|
int |
getDexTypeIndex()
The type index of this class in its own Dex, or -1 if it is unknown.
|
Class<?> |
getEnclosingClass()
Returns the class enclosing this class.
|
Constructor<?> |
getEnclosingConstructor()
Returns the enclosing
Constructor of this Class, if it is an
anonymous or local/automatic class; otherwise null. |
Method |
getEnclosingMethod()
Returns the enclosing
Method of this Class, if it is an
anonymous or local/automatic class; otherwise null. |
T[] |
getEnumConstants()
Returns the
enum constants associated with this Class. |
Field |
getField(String name)
Returns a
Field object which represents the public field with the given name. |
Field[] |
getFields()
Returns an array containing
Field objects for all public fields
for the class C represented by this Class. |
Type[] |
getGenericInterfaces()
Returns the
Types of the interfaces that this Class directly
implements. |
Type |
getGenericSuperclass()
Returns the
Type that represents the superclass of this class. |
Class<?>[] |
getInterfaces()
Returns an array of
Class objects that match the interfaces
in the implements declaration of the class represented
by this Class. |
Method |
getMethod(String name,
Class<?>... parameterTypes)
Returns a
Method object which represents the public method with
the specified name and parameter types. |
Method[] |
getMethods()
Returns an array containing
Method objects for all public methods
for the class C represented by this Class. |
int |
getModifiers()
Returns an integer that represents the modifiers of the class represented
by this
Class. |
String |
getName()
Returns the name of the class represented by this
Class. |
Package |
getPackage()
Returns the
Package of which the class represented by this
Class is a member. |
String |
getPackageName$()
Returns the package name of this class.
|
ProtectionDomain |
getProtectionDomain()
Returns
null. |
URL |
getResource(String resourceName)
Returns the URL of the given resource, or
null if the resource is not found. |
InputStream |
getResourceAsStream(String resourceName)
Returns a read-only stream for the contents of the given resource, or
null if the
resource is not found. |
Object[] |
getSigners()
Returns
null. |
String |
getSimpleName()
Returns the simple name of the class represented by this
Class as
defined in the source code. |
Class<? super T> |
getSuperclass()
Returns the
Class object which represents the superclass of the
class represented by this Class. |
TypeVariable<Class<T>>[] |
getTypeParameters()
Returns an array containing
TypeVariable objects for type
variables declared by the generic class represented by this Class. |
boolean |
isAnnotation()
Tests whether this
Class represents an annotation class. |
boolean |
isAnnotationPresent(Class<? extends Annotation> annotationType)
Indicates whether or not this element has an annotation with the
specified annotation type (including inherited annotations).
|
boolean |
isAnonymousClass()
Tests whether the class represented by this
Class is
anonymous. |
boolean |
isArray()
Tests whether the class represented by this
Class is an array class. |
boolean |
isAssignableFrom(Class<?> c)
Can
c be assigned to this class? For example, String can be assigned to Object
(by an upcast), however, an Object cannot be assigned to a String as a potentially exception
throwing downcast would be necessary. |
boolean |
isEnum()
Tests whether the class represented by this
Class is an
enum. |
boolean |
isFinalizable()
Indicates whether this
Class or its parents override finalize. |
boolean |
isInstance(Object object)
Tests whether the given object can be cast to the class
represented by this
Class. |
boolean |
isInterface()
Tests whether this
Class represents an interface. |
boolean |
isLocalClass()
Tests whether the class represented by this
Class is defined
locally. |
boolean |
isMemberClass()
Tests whether the class represented by this
Class is a member
class. |
boolean |
isPrimitive()
Tests whether this
Class represents a primitive type. |
boolean |
isProxy()
Is this a runtime created proxy class?
|
boolean |
isSynthetic()
Tests whether this
Class represents a synthetic type. |
T |
newInstance()
Returns a new instance of the class represented by this
Class,
created by invoking the default (that is, zero-argument) constructor. |
String |
toString()
Returns a string containing a concise, human-readable description of this
object.
|
public static Class<?> forName(String className) throws ClassNotFoundException
Class object which represents the class with
the given name. The name should be the name of a non-primitive
class, as described in the class definition.
Primitive types can not be found using this method; use int.class or Integer.TYPE instead.
If the class has not yet been loaded, it is loaded and initialized first. This is done through either the class loader of the calling class or one of its parent class loaders. It is possible that a static initializer is run as a result of this call.
ClassNotFoundException - if the requested class cannot be found.LinkageError - if an error occurs during linkageExceptionInInitializerError - if an exception occurs during static initialization of a
class.public static Class<?> forName(String className, boolean shouldInitialize, ClassLoader classLoader) throws ClassNotFoundException
Class object which represents the class with
the given name. The name should be the name of a non-primitive
class, as described in the class definition.
Primitive types can not be found using this method; use int.class or Integer.TYPE instead.
If the class has not yet been loaded, it is loaded first, using the given class loader.
If the class has not yet been initialized and shouldInitialize is true,
the class will be initialized.
If the provided classLoader is null, the bootstrap
class loader will be used to load the class.
ClassNotFoundException - if the requested class cannot be found.LinkageError - if an error occurs during linkageExceptionInInitializerError - if an exception occurs during static initialization of a
class.public Class<?>[] getClasses()
Class objects for all
public classes, interfaces, enums and annotations that are
members of this class and its superclasses. This does not
include classes of implemented interfaces. If there are no
such class members or if this object represents a primitive
type then an array of length 0 is returned.public <A extends Annotation> A getAnnotation(Class<A> annotationType)
AnnotatedElementnull if no annotation with the specified type is present
(including inherited annotations).getAnnotation in interface AnnotatedElementannotationType - the type of the annotation to search fornullpublic Annotation[] getAnnotations()
getAnnotations in interface AnnotatedElementgetDeclaredAnnotations()public String getCanonicalName()
null.public ClassLoader getClassLoader()
Class. Implementations are free to return null for
classes that were loaded by the bootstrap class loader. The Android
reference implementation, though, always returns a reference to an actual
class loader.public Class<?> getComponentType()
Class object which represents the component type if
this class represents an array type. Returns 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.public Dex getDex()
public String getDexCacheString(Dex dex, int dexStringIndex)
public Class<?> getDexCacheType(Dex dex, int dexTypeIndex)
public Constructor<T> getConstructor(Class<?>... parameterTypes) throws NoSuchMethodException
Constructor object which represents the public
constructor matching the given parameter types.
(Class[]) null is equivalent to the empty array.NoSuchMethodException - if the constructor cannot be found.getDeclaredConstructor(Class[])public Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes) throws NoSuchMethodException
Constructor object which represents the constructor
matching the specified parameter types that is declared by the class
represented by this Class.
(Class[]) null is equivalent to the empty array.NoSuchMethodException - if the requested constructor cannot be found.getConstructor(Class[])public Constructor<?>[] getConstructors()
Constructor objects for all public
constructors for this Class. If there
are no public constructors or if this Class represents an array
class, a primitive type or void then an empty array is returned.getDeclaredConstructors()public Constructor<?>[] getDeclaredConstructors()
Constructor objects for all
constructors declared in the class represented by this Class. If
there are no constructors or if this Class represents an array
class, a primitive type or void then an empty array is returned.getConstructors()public Method getDeclaredMethod(String name, Class<?>... parameterTypes) throws NoSuchMethodException
Method object which represents the method matching the
specified name and parameter types that is declared by the class
represented by this Class.name - the requested method's name.parameterTypes - the parameter types of the requested method.
(Class[]) null is equivalent to the empty array.name and parameterTypes.NoSuchMethodException - if the requested method cannot be found.NullPointerException - if name is null.getMethod(String, Class[])public Method getMethod(String name, Class<?>... parameterTypes) throws NoSuchMethodException
Method object which represents the public method with
the specified name and parameter types.
(Class[]) null is equivalent to the empty array.
This method first searches the
class C represented by this 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.NoSuchMethodException - if the method cannot be found.getDeclaredMethod(String, Class[])public Method[] getDeclaredMethods()
Method objects for all methods
declared in the class represented by this Class. If there are no
methods or if this Class represents an array class, a primitive
type or void then an empty array is returned.getMethods()public Method[] getDeclaredMethodsUnchecked(boolean publicOnly)
publicOnly - Whether to return only public methods.methods - A list to populate with declared methods.public Method[] getMethods()
Method objects for all public methods
for the class C represented by this 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.
If there are no public methods or if this Class represents a
primitive type or void then an empty array is returned.
getDeclaredMethods()public Annotation[] getDeclaredAnnotations()
Class. Annotations that are inherited are not
included in the result. If there are no annotations at all, an empty
array is returned.getDeclaredAnnotations in interface AnnotatedElementgetAnnotations()public Class<?>[] getDeclaredClasses()
Class objects for all classes,
interfaces, enums and annotations that are members of this class.public Field getDeclaredField(String name) throws NoSuchFieldException
Field object for the field with the given name
which is declared in the class represented by this Class.NoSuchFieldException - if the requested field can not be found.getField(String)public Field[] getDeclaredFields()
Field objects for all fields declared
in the class represented by this Class. If there are no fields or
if this Class represents an array class, a primitive type or void
then an empty array is returned.getFields()public Field[] getDeclaredFieldsUnchecked(boolean publicOnly)
publicOnly - Whether to return only public fields.fields - A list to populate with declared fields.public Class<?> getDeclaringClass()
null if this
class is a top-level class, a primitive, an array, or defined within a
method or constructor.public Class<?> getEnclosingClass()
declaring class. For classes defined
within a method or constructor (typically anonymous inner classes), this
is the declaring class of that member.public Constructor<?> getEnclosingConstructor()
Constructor of this Class, if it is an
anonymous or local/automatic class; otherwise null.public Method getEnclosingMethod()
Method of this Class, if it is an
anonymous or local/automatic class; otherwise null.public T[] getEnumConstants()
enum constants associated with this Class.
Returns null if this Class does not represent an enum type.public Field getField(String name) throws NoSuchFieldException
Field object which represents the public field with the given name. This
method first searches the class C represented by this Class, then recursively calls
getField on the interfaces directly implemented by C (in the order they are declared)
and finally recursively calls getField on the superclass of C.NoSuchFieldException - if the field cannot be found.NullPointerException - if name is null.getDeclaredField(String)public Field[] getFields()
Field objects for all public fields
for the class C represented by this 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.
If there are no public fields or if this class represents an array class,
a primitive type or void then an empty array is returned.
getDeclaredFields()public Type[] getGenericInterfaces()
Types of the interfaces that this Class directly
implements. If the Class represents a primitive type or void then an empty array is returned.public Type getGenericSuperclass()
Type that represents the superclass of this class.public Class<?>[] getInterfaces()
Class objects that match the interfaces
in the implements declaration of the class represented
by this 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.
This method only returns directly-implemented interfaces, and does not include interfaces implemented by superclasses or superinterfaces of any implemented interfaces.
public int getModifiers()
Class. The returned value is a combination of bits
defined by constants in the Modifier class.public String getName()
Class. For a
description of the format which is used, see the class definition of
Class.public String getSimpleName()
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 "Integer[]") is returned.Class.public ProtectionDomain getProtectionDomain()
null.public URL getResource(String resourceName)
null if the resource is not found.
The mapping between the resource name and the URL is managed by the class' class loader.ClassLoaderpublic InputStream getResourceAsStream(String resourceName)
null if the
resource is not found.
The mapping between the resource name and the stream is managed by the class' class loader.ClassLoaderpublic Object[] getSigners()
null. (On Android, a ClassLoader can load classes from multiple dex
files. All classes from any given dex file will have the same signers, but different dex
files may have different signers. This does not fit well with the original
ClassLoader-based model of getSigners.)public Class<? super T> getSuperclass()
Class object which represents the superclass of the
class represented by this Class. If this Class represents
the Object class, a primitive type, an interface or void then the
method returns null. If this Class represents an array
class then the Object class is returned.public TypeVariable<Class<T>>[] getTypeParameters()
TypeVariable objects for type
variables declared by the generic class represented by this Class. Returns an empty array if the class is not generic.getTypeParameters in interface GenericDeclarationpublic boolean isAnnotation()
Class represents an annotation class.public boolean isAnnotationPresent(Class<? extends Annotation> annotationType)
AnnotatedElementisAnnotationPresent in interface AnnotatedElementannotationType - the type of the annotation to search fortrue if the annotation exists, false otherwisepublic boolean isAnonymousClass()
Class is
anonymous.public boolean isArray()
Class is an array class.public boolean isProxy()
public boolean isAssignableFrom(Class<?> c)
c be assigned to this class? For example, String can be assigned to Object
(by an upcast), however, an Object cannot be assigned to a String as a potentially exception
throwing downcast would be necessary. Similarly for interfaces, a class that implements (or
an interface that extends) another can be assigned to its parent, but not vice-versa. All
Classes may assign to themselves. Classes for primitive types may not assign to each other.c - the class to check.true if c can be assigned to the class
represented by this Class; false otherwise.NullPointerException - if c is null.public boolean isEnum()
Class is an
enum.public boolean isInstance(Object object)
Class. This is the runtime version of the
instanceof operator.true if object can be cast to the type
represented by this Class; false if object is null or cannot be cast.public boolean isInterface()
Class represents an interface.public boolean isLocalClass()
Class is defined
locally.public boolean isMemberClass()
Class is a member
class.public boolean isPrimitive()
Class represents a primitive type.public boolean isSynthetic()
Class represents a synthetic type.public boolean isFinalizable()
Class or its parents override finalize.public T newInstance() throws InstantiationException, IllegalAccessException
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 InstantiationException is thrown. If the default
constructor exists but is not accessible from the context where this
method is invoked, an IllegalAccessException is thrown.IllegalAccessException - if the default constructor is not visible.InstantiationException - if the instance cannot be created.public String toString()
ObjectgetClass().getName() + '@' + Integer.toHexString(hashCode())
See Writing a useful
toString method
if you intend implementing your own toString method.
public Package getPackage()
Package of which the class represented by this
Class is a member. Returns null if no Package
object was created by the class loader of the class.public String getPackageName$()
null for classes in
the default package.public boolean desiredAssertionStatus()
Class. Assertion is enabled / disabled based on the class loader,
package or class default at runtime.public <U> Class<? extends U> asSubclass(Class<U> c)
Class to represent a subclass of the given class.
If successful, this Class is returned; otherwise a ClassCastException is thrown.ClassCastException - if this Class cannot be cast to the given type.public T cast(Object obj)
Class.
If the object is null then the result is also null.ClassCastException - if the object cannot be cast to the given type.public int getDexClassDefIndex()
public int getDexTypeIndex()
public int getDexAnnotationDirectoryOffset()