public final class Class<T> extends Object implements Type, AnnotatedElement, GenericDeclaration, Serializable
Arrays with identical type and number of dimensions share the same class.
The array class ClassLoader is the same as the ClassLoader of the element
type of the array (which can be null to indicate the bootstrap classloader).
The name of an array class is [<signature format>;
.
For example,
String[]'s class is [Ljava.lang.String;
. boolean, byte,
short, char, int, long, float and double have the "type name" of
Z,B,S,C,I,J,F,D for the purposes of array classes. If it's a
multidimensioned array, the same principle applies:
int[][][]
== [[[I
.
There is no public constructor - Class objects are obtained only through the virtual machine, as defined in ClassLoaders.
ClassLoader
,
Serialized FormModifier and Type | Method and Description |
---|---|
Method |
_getMethod(String methodName,
Class[] args) |
<U> Class<? extends U> |
asSubclass(Class<U> klass)
Casts this class to represent a subclass of the specified class.
|
T |
cast(Object obj)
Returns the specified object, cast to this
Class ' type. |
boolean |
desiredAssertionStatus()
Returns the desired assertion status of this class, if it were to be
initialized at this moment.
|
protected void |
finalize()
Called on an object by the Virtual Machine at most once,
at some point after the Object is determined unreachable
but before it is destroyed.
|
static Class<?> |
forName(String className)
Use the classloader of the current class to load, link, and initialize
a class.
|
static Class<?> |
forName(String className,
boolean initialize,
ClassLoader loader)
Use the specified classloader to load and link a class.
|
<A extends Annotation> |
getAnnotation(Class<A> annotationClass)
Returns this class' annotation for the specified annotation type,
or
null if no such annotation exists. |
Annotation[] |
getAnnotations()
Returns all annotations associated with this class.
|
String |
getCanonicalName()
Returns the canonical name of this class, as defined by section
6.7 of the Java language specification.
|
Class<?>[] |
getClasses()
Get all the public member classes and interfaces declared in this
class or inherited from superclasses.
|
ClassLoader |
getClassLoader()
Get the ClassLoader that loaded this class.
|
Class<?> |
getComponentType()
If this is an array, get the Class representing the type of array.
|
Constructor<T> |
getConstructor(Class<?>... args)
Get a public constructor declared in this class.
|
Constructor<?>[] |
getConstructors()
Get all the public constructors of this class.
|
Annotation[] |
getDeclaredAnnotations()
Returns all annotations directly defined by this class.
|
Class<?>[] |
getDeclaredClasses()
Get all the declared member classes and interfaces in this class, but
not those inherited from superclasses.
|
Constructor<T> |
getDeclaredConstructor(Class<?>... args)
Get a constructor declared in this class.
|
Constructor<?>[] |
getDeclaredConstructors()
Get all the declared constructors of this class.
|
Field |
getDeclaredField(String fieldName)
Get a field declared in this class, where name is its simple name.
|
Field[] |
getDeclaredFields()
Get all the declared fields in this class, but not those inherited from
superclasses.
|
Method |
getDeclaredMethod(String methodName,
Class<?>... args)
Get a method declared in this class, where name is its simple name.
|
Method[] |
getDeclaredMethods()
Get all the declared methods in this class, but not those inherited from
superclasses.
|
Class<?> |
getDeclaringClass()
If this is a nested or inner class, return the class that declared it.
|
Class<?> |
getEnclosingClass()
Returns the class which immediately encloses this class.
|
Constructor<T> |
getEnclosingConstructor()
Returns the constructor which immediately encloses this class.
|
Method |
getEnclosingMethod()
Returns the method which immediately encloses this class.
|
T[] |
getEnumConstants()
Returns the enumeration constants of this class, or
null if this class is not an
Enum . |
Field |
getField(String fieldName)
Get a public field declared or inherited in this class, where name is
its simple name.
|
Field[] |
getFields()
Get all the public fields declared in this class or inherited from
superclasses.
|
Type[] |
getGenericInterfaces()
Returns an array of
Type objects which represent the
interfaces directly implemented by this class or extended by this
interface. |
Type |
getGenericSuperclass()
Returns a
Type object representing the direct superclass,
whether class, interface, primitive type or void, of this class. |
Class<?>[] |
getInterfaces()
Get the interfaces this class directly implements, in the
order that they were declared.
|
Method |
getMethod(String methodName,
Class<?>... args)
Get a public method declared or inherited in this class, where name is
its simple name.
|
Method[] |
getMethods()
Get all the public methods declared in this class or inherited from
superclasses.
|
int |
getModifiers()
Get the modifiers of this class.
|
String |
getName()
Get the name of this class, separated by dots for package separators.
|
Package |
getPackage()
Returns the
Package in which this class is defined
Returns null when this information is not available from the
classloader of this class. |
ProtectionDomain |
getProtectionDomain()
Returns the protection domain of this class.
|
URL |
getResource(String resourceName)
Get a resource URL using this class's package using the
getClassLoader().getResource() method.
|
InputStream |
getResourceAsStream(String resourceName)
Get a resource using this class's package using the
getClassLoader().getResourceAsStream() method.
|
Object[] |
getSigners()
Get the signers of this class.
|
String |
getSimpleName()
Returns the simple name for this class, as used in the source
code.
|
Class<? super T> |
getSuperclass()
Get the direct superclass of this class.
|
TypeVariable<Class<T>>[] |
getTypeParameters()
Returns an array of
TypeVariable objects that represents
the type variables declared by this class, in declaration order. |
boolean |
isAnnotation()
Returns true if this class is an
Annotation . |
boolean |
isAnnotationPresent(Class<? extends Annotation> annotationClass)
Returns true if an annotation for the specified type is associated
with this class.
|
boolean |
isAnonymousClass()
Returns true if this object represents an anonymous class.
|
boolean |
isArray()
Return whether this class is an array type.
|
boolean |
isAssignableFrom(Class<?> c)
Discover whether an instance of the Class parameter would be an
instance of this Class as well.
|
boolean |
isEnum()
Returns true if this class is an
Enum . |
boolean |
isInstance(Object o)
Discover whether an Object is an instance of this Class.
|
boolean |
isInterface()
Check whether this class is an interface or not.
|
boolean |
isLocalClass()
Returns true if this object represents an local class.
|
boolean |
isMemberClass()
Returns true if this object represents an member class.
|
boolean |
isPrimitive()
Return whether this class is a primitive type.
|
boolean |
isSynthetic()
Returns true if this class is a synthetic class, generated by
the compiler.
|
T |
newInstance()
Get a new instance of this class by calling the no-argument constructor.
|
String |
toString()
Return the human-readable form of this Object.
|
protected void finalize() throws Throwable
Object
java.lang.ref
package.
Virtual Machines are free to not call this method if
they can determine that it does nothing important; for
example, if your class extends Object and overrides
finalize to do simply super.finalize()
.
finalize() will be called by a Thread
that has no
locks on any Objects, and may be called concurrently.
There are no guarantees on the order in which multiple
objects are finalized. This means that finalize() is
usually unsuited for performing actions that must be
thread-safe, and that your implementation must be
use defensive programming if it is to always work.
If an Exception is thrown from finalize() during garbage collection, it will be patently ignored and the Object will still be destroyed.
It is allowed, although not typical, for user code to call finalize() directly. User invocation does not affect whether automatic invocation will occur. It is also permitted, although not recommended, for a finalize() method to "revive" an object by making it reachable from normal code again.
Unlike constructors, finalize() does not get called
for an object's superclass unless the implementation
specifically calls super.finalize()
.
The default implementation does nothing.
finalize
in class Object
Throwable
- permits a subclass to throw anything in an
overridden version; but the default throws nothingSystem.gc()
,
System.runFinalizersOnExit(boolean)
,
java.lang.ref
public static Class<?> forName(String className) throws ClassNotFoundException
Class.forName(name, true, getClass().getClassLoader())
.name
- the name of the class to findClassNotFoundException
- if the class was not found by the
classloaderLinkageError
- if linking the class failsExceptionInInitializerError
- if the class loads, but an exception
occurs during initializationpublic static Class<?> forName(String className, boolean initialize, ClassLoader loader) throws ClassNotFoundException
Calls classloader.loadclass(name, initialize)
.
name
- the name of the class to findinitialize
- whether or not to initialize the class at this timeclassloader
- the classloader to use to find the class; null means
to use the bootstrap class loaderClassNotFoundException
- if the class was not found by the
classloaderLinkageError
- if linking the class failsExceptionInInitializerError
- if the class loads, but an exception
occurs during initializationSecurityException
- if the classloader
argument
is null
and the caller does not have the
RuntimePermission("getClassLoader")
permissionClassLoader
public Class<?>[] getClasses()
checkMemberAccess(this, Member.PUBLIC)
as well as
checkPackageAccess
both having to succeed.SecurityException
- if the security check failspublic ClassLoader getClassLoader()
RuntimePermission("getClassLoader")
must first succeed. Primitive types and void return null.SecurityException
- if the security check failsClassLoader
,
RuntimePermission
public Class<?> getComponentType()
Array
public Constructor<T> getConstructor(Class<?>... args) throws NoSuchMethodException
checkMemberAccess(this, Member.PUBLIC)
as well as
checkPackageAccess
both having to succeed.types
- the type of each parameterNoSuchMethodException
- if the constructor does not existSecurityException
- if the security check failsgetConstructors()
public Constructor<?>[] getConstructors()
checkMemberAccess(this, Member.PUBLIC)
as well as checkPackageAccess
both having to succeed.SecurityException
- if the security check failspublic Constructor<T> getDeclaredConstructor(Class<?>... args) throws NoSuchMethodException
checkMemberAccess(this, Member.DECLARED)
as well as
checkPackageAccess
both having to succeed.types
- the type of each parameterNoSuchMethodException
- if the constructor does not existSecurityException
- if the security check failsgetDeclaredConstructors()
public Class<?>[] getDeclaredClasses()
checkMemberAccess(this, Member.DECLARED)
as well as
checkPackageAccess
both having to succeed.SecurityException
- if the security check failspublic Constructor<?>[] getDeclaredConstructors()
checkMemberAccess(this, Member.DECLARED)
as well as checkPackageAccess
both having to succeed.SecurityException
- if the security check failspublic Field getDeclaredField(String fieldName) throws NoSuchFieldException
checkMemberAccess(this, Member.DECLARED)
as well as checkPackageAccess
both having to succeed.name
- the name of the fieldNoSuchFieldException
- if the field does not existSecurityException
- if the security check failsgetDeclaredFields()
public Field[] getDeclaredFields()
checkMemberAccess(this, Member.DECLARED)
as well as
checkPackageAccess
both having to succeed.SecurityException
- if the security check failspublic Method getDeclaredMethod(String methodName, Class<?>... args) throws NoSuchMethodException
checkMemberAccess(this, Member.DECLARED)
as well as
checkPackageAccess
both having to succeed.methodName
- the name of the methodtypes
- the type of each parameterNoSuchMethodException
- if the method does not existSecurityException
- if the security check failsgetDeclaredMethods()
public Method[] getDeclaredMethods()
checkMemberAccess(this, Member.DECLARED)
as well as
checkPackageAccess
both having to succeed.SecurityException
- if the security check failspublic Class<?> getDeclaringClass()
public Field getField(String fieldName) throws NoSuchFieldException
checkMemberAccess(this, Member.PUBLIC)
as well as
checkPackageAccess
both having to succeed.fieldName
- the name of the fieldNoSuchFieldException
- if the field does not existSecurityException
- if the security check failsgetFields()
public Field[] getFields()
checkMemberAccess(this, Member.PUBLIC)
as well as
checkPackageAccess
both having to succeed.SecurityException
- if the security check failspublic Package getPackage()
Package
in which this class is defined
Returns null when this information is not available from the
classloader of this class.public Class<?>[] getInterfaces()
public Method _getMethod(String methodName, Class[] args)
public Method getMethod(String methodName, Class<?>... args) throws NoSuchMethodException
checkMemberAccess(this, Member.PUBLIC)
as well as
checkPackageAccess
both having to succeed.methodName
- the name of the methodtypes
- the type of each parameterNoSuchMethodException
- if the method does not existSecurityException
- if the security check failsgetMethods()
public Method[] getMethods()
checkMemberAccess(this, Member.PUBLIC)
as well as
checkPackageAccess
both having to succeed.SecurityException
- if the security check failspublic int getModifiers()
Modifer
public String getName()
Byte.TYPE.getName()
returns "byte".
Arrays are specially encoded as shown on this table.
array type [element type (note that the element type is encoded per this table) boolean Z byte B char C short S int I long J float F double D void V class or interface, alone: <dotted name> class or interface, as element type: L<dotted name>;
public URL getResource(String resourceName)
If the name you supply is absolute (it starts with a /
),
then the leading /
is removed and it is passed on to
getResource(). If it is relative, the package name is prepended, and
.
's are replaced with /
.
The URL returned is system- and classloader-dependent, and could change across implementations.
resourceName
- the name of the resource, generally a pathNullPointerException
- if name is nullpublic InputStream getResourceAsStream(String resourceName)
If the name you supply is absolute (it starts with a /
),
then the leading /
is removed and it is passed on to
getResource(). If it is relative, the package name is prepended, and
.
's are replaced with /
.
The URL returned is system- and classloader-dependent, and could change across implementations.
resourceName
- the name of the resource, generally a pathNullPointerException
- if name is nullpublic Object[] getSigners()
public Class<? super T> getSuperclass()
public boolean isArray()
public boolean isAssignableFrom(Class<?> c)
isInstance(c.newInstance())
or even
c.newInstance() instanceof (this class)
. While this
checks widening conversions for objects, it must be exact for primitive
types.c
- the class to checkNullPointerException
- if c is nullpublic boolean isInstance(Object o)
o instanceof (this class)
.o
- the Object to checkpublic boolean isInterface()
public boolean isPrimitive()
Boolean.TYPE
,
Byte.TYPE
,
Character.TYPE
,
Short.TYPE
,
Integer.TYPE
,
Long.TYPE
,
Float.TYPE
,
Double.TYPE
,
Void.TYPE
public T newInstance() throws InstantiationException, IllegalAccessException
checkMemberAccess(this, Member.PUBLIC)
as well as checkPackageAccess
both having to succeed.InstantiationException
- if there is not a no-arg constructor
for this class, including interfaces, abstract classes, arrays,
primitive types, and void; or if an exception occurred during
the constructorIllegalAccessException
- if you are not allowed to access the
no-arg constructor because of scoping reasonsSecurityException
- if the security check failsExceptionInInitializerError
- if class initialization caused by
this call fails with an exceptionpublic ProtectionDomain getProtectionDomain()
null
code source
and all permissions. A security check may be performed, with
RuntimePermission("getProtectionDomain")
.SecurityException
- if the security manager exists and the caller
does not have RuntimePermission("getProtectionDomain")
.RuntimePermission
public String toString()
getName()
,
for primitive types and void it is just getName()
.toString
in class Object
Object.getClass()
,
Object.hashCode()
,
getName()
,
Integer.toHexString(int)
public boolean desiredAssertionStatus()
ClassLoader.setClassAssertionStatus(String, boolean)
,
ClassLoader.setPackageAssertionStatus(String, boolean)
,
ClassLoader.setDefaultAssertionStatus(boolean)
public <U> Class<? extends U> asSubclass(Class<U> klass)
Casts this class to represent a subclass of the specified class.
This method is useful for `narrowing' the type of a class so that
the class object, and instances of that class, can match the contract
of a more restrictive method. For example, if this class has the
static type of Class<Object>
, and a dynamic type of
Class<Rectangle>
, then, assuming Shape
is
a superclass of Rectangle
, this method can be used on
this class with the parameter, Class<Shape>
, to retain
the same instance but with the type
Class<? extends Shape>
.
If this class can be converted to an instance which is parameterised
over a subtype of the supplied type, U
, then this method
returns an appropriately cast reference to this object. Otherwise,
a ClassCastException
is thrown.
klass
- the class object, the parameterized type (U
) of
which should be a superclass of the parameterized type of
this instance.ClassCastException
- if this class can not be converted to one
which represents a subclass of the specified
type, U
.public T cast(Object obj)
Class
' type.obj
- the object to castClassCastException
- if obj is not an instance of this classpublic T[] getEnumConstants()
Enum
.Enum
constants
associated with this class, or null if this
class is not an enum
.public boolean isEnum()
Enum
.public boolean isSynthetic()
public boolean isAnnotation()
Annotation
.public String getSimpleName()
getName()
which follows the last ".". Anonymous
classes have no name, and so the result of calling this method is
"". The simple name of an array consists of the simple name of
its component type, followed by "[]". Thus, an array with the
component type of an anonymous class has a simple name of simply
"[]".public Class<?> getEnclosingClass()
null
.null
if this is
a top-level class.public Constructor<T> getEnclosingConstructor()
null
is returned.null
is returned.public Method getEnclosingMethod()
null
is returned.null
is returned.public Type[] getGenericInterfaces()
Returns an array of Type
objects which represent the
interfaces directly implemented by this class or extended by this
interface.
If one of the superinterfaces is a parameterized type, then the
object returned for this interface reflects the actual type
parameters used in the source code. Type parameters are created
using the semantics specified by the ParameterizedType
interface, and only if an instance has not already been created.
The order of the interfaces in the array matches the order in which
the interfaces are declared. For classes which represent an array,
an array of two interfaces, Cloneable
and
Serializable
, is always returned, with the objects in
that order. A class representing a primitive type or void always
returns an array of zero size.
GenericSignatureFormatError
- if the generic signature of one
of the interfaces does not comply with that specified by the Java
Virtual Machine specification, 3rd edition.TypeNotPresentException
- if any of the superinterfaces refers
to a non-existant type.MalformedParameterizedTypeException
- if any of the interfaces
refer to a parameterized type that can not be instantiated for
some reason.ParameterizedType
public Type getGenericSuperclass()
Returns a Type
object representing the direct superclass,
whether class, interface, primitive type or void, of this class.
If this class is an array class, then a class instance representing
the Object
class is returned. If this class is primitive,
an interface, or a representation of either the Object
class or void, then null
is returned.
If the superclass is a parameterized type, then the
object returned for this interface reflects the actual type
parameters used in the source code. Type parameters are created
using the semantics specified by the ParameterizedType
interface, and only if an instance has not already been created.
GenericSignatureFormatError
- if the generic signature of the
class does not comply with that specified by the Java
Virtual Machine specification, 3rd edition.TypeNotPresentException
- if the superclass refers
to a non-existant type.MalformedParameterizedTypeException
- if the superclass
refers to a parameterized type that can not be instantiated for
some reason.ParameterizedType
public TypeVariable<Class<T>>[] getTypeParameters()
TypeVariable
objects that represents
the type variables declared by this class, in declaration order.
An array of size zero is returned if this class has no type
variables.getTypeParameters
in interface GenericDeclaration
GenericSignatureFormatError
- if the generic signature does
not conform to the format specified in the Virtual Machine
specification, version 3.public <A extends Annotation> A getAnnotation(Class<A> annotationClass)
null
if no such annotation exists.getAnnotation
in interface AnnotatedElement
annotationClass
- the type of annotation to look for.null
if no such annotation exists.public Annotation[] getAnnotations()
getAnnotations
in interface AnnotatedElement
public String getCanonicalName()
Returns the canonical name of this class, as defined by section 6.7 of the Java language specification. Each package, top-level class, top-level interface and primitive type has a canonical name. A member class has a canonical name, if its parent class has one. Likewise, an array type has a canonical name, if its component type does. Local or anonymous classes do not have canonical names.
The canonical name for top-level classes, top-level interfaces and primitive types is always the same as the fully-qualified name. For array types, the canonical name is the canonical name of its component type with `[]' appended.
The canonical name of a member class always refers to the place where
the class was defined, and is composed of the canonical name of the
defining class and the simple name of the member class, joined by `.'.
For example, if a Person
class has an inner class,
M
, then both its fully-qualified name and canonical name
is Person.M
. A subclass, Staff
, of
Person
refers to the same inner class by the fully-qualified
name of Staff.M
, but its canonical name is still
Person.M
.
Where no canonical name is present, null
is returned.
null
if the
class doesn't have a canonical name.public Annotation[] getDeclaredAnnotations()
getDeclaredAnnotations
in interface AnnotatedElement
public boolean isAnnotationPresent(Class<? extends Annotation> annotationClass)
isAnnotationPresent
in interface AnnotatedElement
annotationClass
- the type of annotation to look for.public boolean isAnonymousClass()
public boolean isLocalClass()
public boolean isMemberClass()