©
本文档使用 PHP中文网手册 发布
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.lang.Object java.lang.Class<T>
T
- 由此 Class
对象建模的类的类型。例如,String.class
的类型是 Class<String>
。如果将被建模的类未知,则使用 Class<?>
。public final class Class<T>
Class
类的实例表示正在运行的 Java 应用程序中的类和接口。枚举是一种类,注释是一种接口。每个数组属于被映射为 Class 对象的一个类,所有具有相同元素类型和维数的数组都共享该 Class
对象。基本的 Java 类型(boolean
、byte
、char
、short
、int
、long
、float
和 double
)和关键字 void
也表示为 Class
对象。
Class
没有公共构造方法。Class
对象是在加载类时由 Java 虚拟机以及通过调用类加载器中的 defineClass
方法自动构造的。
以下示例使用 Class
对象来显示对象的类名:
void printClassName(Object obj) { System.out.println("The class of " + obj + " is " + obj.getClass().getName()); }
还可以使用一个类字面值(JLS Section 15.8.2)来获取指定类型(或 void)的 Class
对象。例如:
System.out.println("The name of class Foo is: "+Foo.class.getName());
ClassLoader.defineClass(byte[], int, int)
,
序列化表格方法摘要 | ||
---|---|---|
|
asSubclass(Class<U> clazz)
强制转换该 Class 对象,以表示指定的 class 对象所表示的类的一个子类。 |
|
T |
cast(Object obj)
将一个对象强制转换成此 Class 对象所表示的类或接口。 |
|
boolean |
desiredAssertionStatus()
如果要在调用此方法时将要初始化该类,则返回将分配给该类的断言状态。 |
|
static Class<?> |
forName(String className)
返回与带有给定字符串名的类或接口相关联的 Class 对象。 |
|
static Class<?> |
forName(String name,
boolean initialize,
ClassLoader loader)
使用给定的类加载器,返回与带有给定字符串名的类或接口相关联的 Class 对象。 |
|
|
getAnnotation(Class<A> annotationClass)
如果存在该元素的指定类型的注释,则返回这些注释,否则返回 null。 |
|
Annotation[] |
getAnnotations()
返回此元素上存在的所有注释。 |
|
String |
getCanonicalName()
返回 Java Language Specification 中所定义的底层类的规范化名称。 |
|
Class<?>[] |
getClasses()
返回一个包含某些 Class 对象的数组,这些对象表示属于此 Class 对象所表示的类的成员的所有公共类和接口。 |
|
ClassLoader |
getClassLoader()
返回该类的类加载器。 |
|
Class<?> |
getComponentType()
返回表示数组组件类型的 Class 。 |
|
Constructor<T> |
getConstructor(Class<?>... parameterTypes)
返回一个 Constructor 对象,它反映此 Class 对象所表示的类的指定公共构造方法。 |
|
Constructor<?>[] |
getConstructors()
返回一个包含某些 Constructor 对象的数组,这些对象反映此 Class 对象所表示的类的所有公共构造方法。 |
|
Annotation[] |
getDeclaredAnnotations()
返回直接存在于此元素上的所有注释。 |
|
Class<?>[] |
getDeclaredClasses()
返回 Class 对象的一个数组,这些对象反映声明为此 Class 对象所表示的类的成员的所有类和接口。 |
|
Constructor<T> |
getDeclaredConstructor(Class<?>... parameterTypes)
返回一个 Constructor 对象,该对象反映此 Class 对象所表示的类或接口的指定构造方法。 |
|
Constructor<?>[] |
getDeclaredConstructors()
返回 Constructor 对象的一个数组,这些对象反映此 Class 对象表示的类声明的所有构造方法。 |
|
Field |
getDeclaredField(String name)
返回一个 Field 对象,该对象反映此 Class 对象所表示的类或接口的指定已声明字段。 |
|
Field[] |
getDeclaredFields()
返回 Field 对象的一个数组,这些对象反映此 Class 对象所表示的类或接口所声明的所有字段。 |
|
Method |
getDeclaredMethod(String name,
Class<?>... parameterTypes)
返回一个 Method 对象,该对象反映此 Class 对象所表示的类或接口的指定已声明方法。 |
|
Method[] |
getDeclaredMethods()
返回 Method 对象的一个数组,这些对象反映此 Class 对象表示的类或接口声明的所有方法,包括公共、保护、默认(包)访问和私有方法,但不包括继承的方法。 |
|
Class<?> |
getDeclaringClass()
如果此 Class 对象所表示的类或接口是另一个类的成员,则返回的 Class 对象表示该对象的声明类。 |
|
Class<?> |
getEnclosingClass()
返回底层类的立即封闭类。 |
|
Constructor<?> |
getEnclosingConstructor()
如果该 Class 对象表示构造方法中的一个本地或匿名类,则返回 Constructor 对象,它表示底层类的立即封闭构造方法。 |
|
Method |
getEnclosingMethod()
如果此 Class 对象表示某一方法中的一个本地或匿名类,则返回 Method 对象,它表示底层类的立即封闭方法。 |
|
T[] |
getEnumConstants()
如果此 Class 对象不表示枚举类型,则返回枚举类的元素或 null。 |
|
Field |
getField(String name)
返回一个 Field 对象,它反映此 Class 对象所表示的类或接口的指定公共成员字段。 |
|
Field[] |
getFields()
返回一个包含某些 Field 对象的数组,这些对象反映此 Class 对象所表示的类或接口的所有可访问公共字段。 |
|
Type[] |
getGenericInterfaces()
返回表示某些接口的 Type,这些接口由此对象所表示的类或接口直接实现。 |
|
Type |
getGenericSuperclass()
返回表示此 Class 所表示的实体(类、接口、基本类型或 void)的直接超类的 Type。 |
|
Class<?>[] |
getInterfaces()
确定此对象所表示的类或接口实现的接口。 |
|
Method |
getMethod(String name,
Class<?>... parameterTypes)
返回一个 Method 对象,它反映此 Class 对象所表示的类或接口的指定公共成员方法。 |
|
Method[] |
getMethods()
返回一个包含某些 Method 对象的数组,这些对象反映此 Class 对象所表示的类或接口(包括那些由该类或接口声明的以及从超类和超接口继承的那些的类或接口)的公共 member 方法。 |
|
int |
getModifiers()
返回此类或接口以整数编码的 Java 语言修饰符。 |
|
String |
getName()
以 String 的形式返回此 Class 对象所表示的实体(类、接口、数组类、基本类型或 void)名称。 |
|
Package |
getPackage()
获取此类的包。 |
|
ProtectionDomain |
getProtectionDomain()
返回该类的 ProtectionDomain 。 |
|
URL |
getResource(String name)
查找带有给定名称的资源。 |
|
InputStream |
getResourceAsStream(String name)
查找具有给定名称的资源。 |
|
Object[] |
getSigners()
获取此类的标记。 |
|
String |
getSimpleName()
返回源代码中给出的底层类的简称。 |
|
Class<? super T> |
getSuperclass()
返回表示此 Class 所表示的实体(类、接口、基本类型或 void)的超类的 Class 。 |
|
TypeVariable<Class<T>>[] |
getTypeParameters()
按声明顺序返回 TypeVariable 对象的一个数组,这些对象表示用此 GenericDeclaration 对象所表示的常规声明来声明的类型变量。 |
|
boolean |
isAnnotation()
如果此 Class 对象表示一个注释类型则返回 true。 |
|
boolean |
isAnnotationPresent(Class<? extends Annotation> annotationClass)
如果指定类型的注释存在于此元素上,则返回 true,否则返回 false。 |
|
boolean |
isAnonymousClass()
当且仅当底层类是匿名类时返回 true。 |
|
boolean |
isArray()
判定此 Class 对象是否表示一个数组类。 |
|
boolean |
isAssignableFrom(Class<?> cls)
判定此 Class 对象所表示的类或接口与指定的 Class 参数所表示的类或接口是否相同,或是否是其超类或超接口。 |
|
boolean |
isEnum()
当且仅当该类声明为源代码中的枚举时返回 true。 |
|
boolean |
isInstance(Object obj)
判定指定的 Object 是否与此 Class 所表示的对象赋值兼容。 |
|
boolean |
isInterface()
判定指定的 Class 对象是否表示一个接口类型。 |
|
boolean |
isLocalClass()
当且仅当底层类是本地类时返回 true。 |
|
boolean |
isMemberClass()
当且仅当底层类是成员类时返回 true。 |
|
boolean |
isPrimitive()
判定指定的 Class 对象是否表示一个基本类型。 |
|
boolean |
isSynthetic()
如果此类是复合类,则返回 true,否则 false。 |
|
T |
newInstance()
创建此 Class 对象所表示的类的一个新实例。 |
|
String |
toString()
将对象转换为字符串。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
方法详细信息 |
---|
public String toString()
getName
返回的那种格式。如果此 Class
对象表示一个基本类型,则此方法返回该基本类型的名称。如果该 Class
对象表示 void,则此方法返回 "void"。
Object
中的 toString
public static Class<?> forName(String className) throws ClassNotFoundException
Class
对象。调用此方法等效于:
其中Class.forName(className, true, currentLoader)
currentLoader
表示当前类的定义类加载器。
例如,以下代码片段返回命名为 java.lang.Thread
的类的运行时 Class
描述符。
Class t = Class.forName("java.lang.Thread")
调用 forName("X") 将导致命名为 X 的类被初始化。
className
- 所需类的完全限定名。
Class
对象。
LinkageError
- 如果链接失败
ExceptionInInitializerError
- 如果此方法所激发的初始化失败
ClassNotFoundException
- 如果无法定位该类public static Class<?> forName(String name, boolean initialize, ClassLoader loader) throws ClassNotFoundException
Class
对象。(以 getName
所返回的格式)给定一个类或接口的完全限定名,此方法会试图定位、加载和链接该类或接口。指定的类加载器用于加载该类或接口。如果参数 loader
为 null,则该类通过引导类加载器加载。只有 initialize
参数为 true
且以前未被初始化时,才初始化该类。
如果 name
表示一个基本类型或 void,则会尝试在未命名的包中定位用户定义的名为 name
的类。因此,该方法不能用于获得表示基本类型或 void 的任何 Class
对象。
如果 name
表示一个数组类,则会加载但不初始化该数组类的组件类型。
例如,在一个实例方法中,表达式:
等效于:Class.forName("Foo")
注意,此方法会抛出与加载、链接或初始化相关的错误,Java Language Specification 的第 12.2、12.3 和 12.4 节对此进行了详细说明。 注意,此方法不检查调用者是否可访问其请求的类。Class.forName("Foo", true, this.getClass().getClassLoader())
如果 loader
为 null
,也存在安全管理器,并且调用者的类加载器不为 null,则此方法通过 RuntimePermission("getClassLoader")
权限调用安全管理器的 checkPermission
方法,以确保可以访问引导类加载器。
name
- 所需类的完全限定名initialize
- 是否必须初始化类loader
- 用于加载类的类加载器
LinkageError
- 如果链接失败
ExceptionInInitializerError
- 如果该方法激发的初始化失败
ClassNotFoundException
- 如果指定的类加载器无法定位该类forName(String)
,
ClassLoader
public T newInstance() throws InstantiationException, IllegalAccessException
new
表达式实例化该类。如果该类尚未初始化,则初始化这个类。
注意,此方法传播 null 构造方法所抛出的任何异常,包括已检查的异常。使用此方法可以有效地绕过编译时的异常检查,而在其他情况下编译器都会执行该检查。
Constructor.newInstance
方法将该构造方法所抛出的任何异常包装在一个(已检查的)InvocationTargetException
中,从而避免了这一问题。
IllegalAccessException
- 如果该类或其 null 构造方法是不可访问的。
InstantiationException
- 如果此 Class
表示一个抽象类、接口、数组类、基本类型或 void;
或者该类没有 null 构造方法;
或者由于其他某种原因导致实例化失败。
ExceptionInInitializerError
- 如果该方法引发的初始化失败。
SecurityException
- 如果存在安全管理器 s,并满足下列任一条件:
s.checkMemberAccess(this, Member.PUBLIC)
拒绝创建该类的新实例
s.checkPackageAccess()
的调用拒绝访问该类的包
public boolean isInstance(Object obj)
Object
是否与此 Class
所表示的对象赋值兼容。此方法是 Java 语言 instanceof
运算符的动态等效方法。如果指定的 Object
参数非空,且能够在不引发 ClassCastException
的情况下被强制转换成该 Class
对象所表示的引用类型,则该方法返回 true;否则返回 false
。
特别地,当该 Class
对象表示一个已声明的类时,若指定的 Object
参数是所表示类(或其任一子类)的一个实例,则此方法返回 true
;否则返回 false
。如果此 Class
对象表示一个数组类,且通过身份转换或扩展引用转换,指定的 Object
参数能转换为一个数组类的对象,则返回 true
;否则返回 false
。如果此 Class
对象表示一个接口,且指定 Object
参数的类或任一超类实现了此接口,则此方法返回 true
;否则返回 false
。如果此 Class
对象表示一个基本类型,则此方法返回 false
。
obj
- 要检查的对象
obj
是此类的实例,则返回 truepublic boolean isAssignableFrom(Class<?> cls)
Class
对象所表示的类或接口与指定的 Class
参数所表示的类或接口是否相同,或是否是其超类或超接口。如果是则返回 true
;否则返回 false
。如果该 Class
表示一个基本类型,且指定的 Class
参数正是该 Class
对象,则该方法返回 true
;否则返回 false
。
特别地,通过身份转换或扩展引用转换,此方法能测试指定 Class
参数所表示的类型能否转换为此 Class
对象所表示的类型。有关详细信息,请参阅 Java Language Specification 的第 5.1.1 和 5.1.4 节。
cls
- 要检查的 Class
对象
cls
类型的对象能否赋予此类对象的 boolean
值
NullPointerException
- 如果指定的 Class 参数为 null。public boolean isInterface()
Class
对象是否表示一个接口类型。
true
;否则返回 false
。public boolean isArray()
Class
对象是否表示一个数组类。
true
;否则返回 false
。public boolean isPrimitive()
Class
对象是否表示一个基本类型。
有九种预定义的 Class
对象,表示八个基本类型和 void。这些类对象由 Java 虚拟机创建,与其表示的基本类型同名,即 boolean
、byte
、char
、short
、int
、long
、float
和 double
。
这些对象仅能通过下列声明为 public static final 的变量访问,也是使此方法返回 true
的仅有的几个 Class
对象。
Boolean.TYPE
,
Character.TYPE
,
Byte.TYPE
,
Short.TYPE
,
Integer.TYPE
,
Long.TYPE
,
Float.TYPE
,
Double.TYPE
,
Void.TYPE
public boolean isAnnotation()
isInterface()
也返回 true,因为所有的注释类型同时也是接口。
public boolean isSynthetic()
public String getName()
如果此类对象表示的是非数组类型的引用类型,则返回该类的二进制名称,Java Language Specification, Second Edition 对此作了详细说明。
如果此类对象表示一个基本类型或 void,则返回的名字是一个与该基本类型或 void 所对应的 Java 语言关键字相同的 String。
如果此类对象表示一个数组类,则名字的内部形式为:表示该数组嵌套深度的一个或多个 '[' 字符加元素类型名。元素类型名的编码如下:
Element Type Encoding boolean Z byte B char C class or interface Lclassname; double D float F int I long J short S
类或接口名 classname 是上面指定类的二进制名称。
示例:
String.class.getName() returns "java.lang.String" byte.class.getName() returns "byte" (new Object[3]).getClass().getName() returns "[Ljava.lang.Object;" (new int[3][4][5][6][7][8][9]).getClass().getName() returns "[[[[[[[I"
public ClassLoader getClassLoader()
如果存在安全管理器,并且调用者的类加载器不是 null,也不同于或是请求其类加载器的类的类加载器的祖先,则此方法通过 RuntimePermission("getClassLoader")
权限调用此安全管理器的 checkPermission
方法,以确保可以访问该类的类加载器。
如果此对象表示一个基本类型或 void,则返回 null。
SecurityException
- 如果存在安全管理器,并且 checkPermission
方法拒绝对该类类加载器的访问。ClassLoader
,
SecurityManager.checkPermission(java.security.Permission)
,
RuntimePermission
public TypeVariable<Class<T>>[] getTypeParameters()
GenericDeclaration
中的 getTypeParameters
GenericSignatureFormatError
- 如果常规声明的常规签名不符合 Java Virtual Machine Specification, 3rd edition 规定的格式public Class<? super T> getSuperclass()
Class
所表示的实体(类、接口、基本类型或 void)的超类的 Class
。如果此 Class
表示 Object
类、一个接口、一个基本类型或 void,则返回 null。如果此对象表示一个数组类,则返回表示该 Object
类的 Class
对象。
public Type getGenericSuperclass()
如果超类是参数化类型,则返回的 Type
对象必须准确反映源代码中所使用的实际类型参数。如果以前未曾创建表示超类的参数化类型,则创建这个类型。有关参数化类型创建过程的语义,请参阅 ParameterizedType
声明。如果此 Class 表示 Object
类、接口、基本类型或 void,则返回 null。如果此对象表示一个数组类,则返回表示 Object 类的 Class 对象。
GenericSignatureFormatError
- 如果常规类签名不符合 Java Virtual Machine Specification, 3rd edition 规定的格式
TypeNotPresentException
- 如果常规超类引用不存在的类型声明
MalformedParameterizedTypeException
- 如果常规超类引用的参数化类型由于某种原因无法实例化public Package getPackage()
只有该类的附属清单中定义了信息,并且类加载器使用该清单中的属性创建了包实例时,包才具有版本和规范属性。
public Class<?>[] getInterfaces()
如果此对象表示一个类,则返回值是一个数组,它包含了表示该类所实现的所有接口的对象。数组中接口对象顺序与此对象所表示的类的声明的 implements
子句中接口名顺序一致。例如,给定声明:
设class Shimmer implements FloorWax, DessertTopping { ... }
s
的值为 Shimmer
的一个实例;表达式:
的值为表示s.getClass().getInterfaces()[0]
FloorWax
接口的 Class
对象;
的值为表示s.getClass().getInterfaces()[1]
DessertTopping
接口的 Class
对象。
如果此对象表示一个接口,则该数组包含表示该接口扩展的所有接口的对象。数组中接口对象顺序与此对象所表示的接口的声明的 extends
子句中接口名顺序一致。
如果此对象表示一个不实现任何接口的类或接口,则此方法返回一个长度为 0 的数组。
如果此对象表示一个基本类型或 void,则此方法返回一个长度为 0 的数组。
public Type[] getGenericInterfaces()
如果超接口是参数化类型,则为它返回的 Type 对象必须准确反映源代码中所使用的实际类型参数。如果以前未曾创建表示每个超接口的参数化类型,则创建这个类型。有关参数化类型创建过程的语义,请参阅 ParameterizedType
声明。
如果此对象表示一个类,则返回一个包含这样一些对象的数组,这些对象表示该类实现的所有接口。数组中接口对象顺序与此对象所表示的类的声明的 implements 子句中接口名顺序一致。对于数组类,接口 Cloneable 和 Serializable 以该顺序返回。
如果此对象表示一个接口,则该数组包含表示该接口直接扩展的所有接口的对象。数组中接口对象顺序与此对象所表示的接口的声明的 extends
子句中接口名顺序一致。
如果此对象表示一个不实现任何接口的类或接口,则此方法返回一个长度为 0 的数组。
如果此对象表示一个基本类型或 void,则此方法返回一个长度为 0 的数组。
GenericSignatureFormatError
- 如果常规类签名不符合 Java Virtual Machine Specification, 3rd edition 规定的格式
TypeNotPresentException
- 如果任意常规超接口引用不存在的类型声明
MalformedParameterizedTypeException
- 如果任意常规超接口引用的参数化类型由于某种原因无法实例化public Class<?> getComponentType()
Class
。如果此类不表示数组类,则此方法返回 null。
Class
Array
public int getModifiers()
public
、protected
、private
、final
、static
、abstract
和 interface
对应的常量组成;它们应当使用 Modifier
类的方法来解码。
如果底层类是数组类,则其 public
、private
和 protected
修饰符与其组件类型的修饰符相同。如果此 Class
表示一个基本类型或 void,则其 public
修饰符始终为 true
,protected
和 private
修饰符始终为 false
。如果此对象表示一个数组类、一个基本类型或 void,则其 final
修饰符始终为 true
,其接口修饰符始终为 false
。该规范没有给定其他修饰符的值。
Java Virtual Machine Specification 中的表 4.1 对修饰符编码进行了详细说明。
int
Modifier
public Object[] getSigners()
public Method getEnclosingMethod()
Method
对象,它表示底层类的立即封闭方法。否则返回 null。
特别地,如果底层类是由一个类型声明、实例初始值设定项或静态初始值设定项立即封闭的本地或匿名类,则此方法返回 null。
public Constructor<?> getEnclosingConstructor()
Constructor
对象,它表示底层类的立即封闭构造方法。否则返回 null。特别地,如果底层类是由一个类型声明、实例初始值设定项或静态初始值设定项立即封闭的本地或匿名类,则此方法返回 null。
public Class<?> getDeclaringClass()
Class
对象所表示的类或接口是另一个类的成员,则返回的 Class
对象表示该对象的声明类。如果该类或接口不是其他类的成员,则此方法返回 null。如果此 Class
对象表示一个数组类、基本类型或 void,则此方法返回 null。
public Class<?> getEnclosingClass()
public String getSimpleName()
数组的简称即附带 "[]" 的组件类型的简称。特别地,组件类型为匿名的数组的简称是 "[]"。
public String getCanonicalName()
public boolean isAnonymousClass()
public boolean isLocalClass()
public boolean isMemberClass()
public Class<?>[] getClasses()
Class
对象的数组,这些对象表示属于此 Class
对象所表示的类的成员的所有公共类和接口。包括从超类继承的公共类和接口成员以及该类声明的公共类和接口成员。如果此 Class
对象没有公共成员类或接口,则此方法返回一个长度为 0 的数组。如果此 Class
对象表示一个基本类型、一个数组类或 void,则此方法也返回一个长度为 0 的数组。
Class
对象的数组
SecurityException
- 如果存在安全管理器 s,并满足下列任一条件:
s.checkMemberAccess(this, Member.PUBLIC)
方法拒绝访问该类中的类
s.checkPackageAccess()
的调用拒绝访问该类的包
public Field[] getFields() throws SecurityException
Field
对象的数组,这些对象反映此 Class
对象所表示的类或接口的所有可访问公共字段。返回数组中的元素没有排序,也没有任何特定的顺序。如果类或接口没有可访问的公共字段,或者表示一个数组类、一个基本类型或 void,则此方法返回长度为 0 的数组。
特别地,如果该 Class
对象表示一个类,则此方法返回该类及其所有超类的公共字段。如果该 Class
对象表示一个接口,则此方法返回该接口及其所有超接口的公共字段。
该方法不反映数组类的隐式长度字段。用户代码应使用 Array
类的方法来操作数组。
请参阅 Java Language Specification 的第 8.2 和 8.3 节。
Field
对象的数组
SecurityException
- 如果存在安全管理器 s,并满足下列任一条件:
s.checkMemberAccess(this, Member.PUBLIC)
拒绝访问该类中的字段
s.checkPackageAccess()
的调用拒绝访问该类的包
public Method[] getMethods() throws SecurityException
Method
对象的数组,这些对象反映此 Class
对象所表示的类或接口(包括那些由该类或接口声明的以及从超类和超接口继承的那些的类或接口)的公共 member 方法。数组类返回从 Object
类继承的所有(公共)member 方法。返回数组中的元素没有排序,也没有任何特定的顺序。如果此 Class
对象表示没有公共成员方法的类或接口,或者表示一个基本类型或 void,则此方法返回长度为 0 的数组。
类初始化方法 <clinit>
不包含在返回的数组中。如果类声明了带有相同参数类型的多个公共成员方法,则它们都会包含在返回的数组中。
请参阅 Java Language Specification 的第 8.2 和 8.4 节。
Method
对象的数组
SecurityException
- 如果存在安全管理器 s,并满足下列任一条件:
s.checkMemberAccess(this, Member.PUBLIC)
拒绝访问该类中的方法
s.checkPackageAccess()
的调用拒绝访问该类的包
public Constructor<?>[] getConstructors() throws SecurityException
Constructor
对象的数组,这些对象反映此 Class
对象所表示的类的所有公共构造方法。如果该类没有公共构造方法,或者该类是一个数组类,或者该类反映一个基本类型或 void,则返回一个长度为 0 的数组。
注意,此方法返回 Constructor<T>
对象的数组(即取自此类构造方法的数组)时,此方法的返回类型是 Constructor<?>[]
,不是 预期的 Constructor<T>[]
。此少量信息的返回类型是必需的,因为从此方法返回之后,该数组可能被修改以保存不同类的 Constructor
对象,而这将违反 Constructor<T>[]
的类型保证。
Constructor
对象数组
SecurityException
- 如果存在安全管理器 s,并满足下列任一条件:
s.checkMemberAccess(this, Member.PUBLIC)
拒绝访问该类中的构造方法
s.checkPackageAccess()
的调用拒绝访问该类的包
public Field getField(String name) throws NoSuchFieldException, SecurityException
Field
对象,它反映此 Class
对象所表示的类或接口的指定公共成员字段。name
参数是一个 String
,用于指定所需字段的简称。
要反映的字段由下面的算法确定。设 C 为此对象所表示的类:
NoSuchFieldException
。
请参阅 Java Language Specification 的第 8.2 和 8.3 节。
name
- 字段名
name
指定的该类的 Field
对象
NoSuchFieldException
- 如果没有找到带有指定名的字段。
NullPointerException
- 如果 name
为 null
SecurityException
- 如果存在安全管理器 s,并满足下列任一条件:
s.checkMemberAccess(this, Member.PUBLIC)
拒绝访问字段
s.checkPackageAccess()
的调用拒绝访问该类的包
public Method getMethod(String name, Class<?>... parameterTypes) throws NoSuchMethodException, SecurityException
Method
对象,它反映此 Class
对象所表示的类或接口的指定公共成员方法。name
参数是一个 String
,用于指定所需方法的简称。parameterTypes
参数是按声明顺序标识该方法形参类型的 Class
对象的一个数组。如果 parameterTypes
为 null
,则按空数组处理。
如果 name
是 "<init>
;" 或 "<clinit>
",则将引发 NoSuchMethodException
。否则,要反映的方法由下面的算法确定(设 C 为此对象所表示的类):
注意,类中可以有多个匹配方法,因为尽管 Java 语言禁止类声明带有相同签名但不同返回类型的多个方法,但 Java 虚拟机并不禁止。这增加了虚拟机的灵活性,可以用来实现各种语言特性。例如,可以使用桥方法 (brige method)实现协变返回;桥方法以及将被重写的方法将具有相同的签名,不同的返回类型。
请参阅Java 语言规范 第 8.2 和 8.4 节。
name
- 方法名parameterTypes
- 参数列表
name
和 parameterTypes
匹配的 Method
对象
NoSuchMethodException
- 如果找不到匹配的方法,或者方法名为 "<init>" 或 "<clinit>"
NullPointerException
- 如果 name
为 null
SecurityException
- 如果存在安全管理器 s,并满足下列任一条件:
s.checkMemberAccess(this, Member.PUBLIC)
拒绝访问方法
s.checkPackageAccess()
的调用拒绝访问该类的包
public Constructor<T> getConstructor(Class<?>... parameterTypes) throws NoSuchMethodException, SecurityException
Constructor
对象,它反映此 Class
对象所表示的类的指定公共构造方法。parameterTypes
参数是 Class
对象的一个数组,这些 Class 对象按声明顺序标识构造方法的形参类型。
如果此 Class
对象表示非静态上下文中声明的内部类,则形参类型作为第一个参数包括显示封闭的实例。
要反映的构造方法是此 Class
对象所表示的类的公共构造方法,其形参类型与 parameterTypes
所指定的参数类型相匹配。
parameterTypes
- 参数数组
parameterTypes
相匹配的公共构造方法的 Constructor
对象
NoSuchMethodException
- 如果找不到匹配的方法。
SecurityException
- 如果存在安全管理器 s,并满足下列任一条件:
s.checkMemberAccess(this, Member.PUBLIC)
拒绝访问构造方法
s.checkPackageAccess()
的调用拒绝访问该类的包
public Class<?>[] getDeclaredClasses() throws SecurityException
Class
对象的一个数组,这些对象反映声明为此 Class
对象所表示的类的成员的所有类和接口。包括该类所声明的公共、保护、默认(包)访问及私有类和接口,但不包括继承的类和接口。如果该类不将任何类或接口声明为成员,或者此 Class
对象表示基本类型、数组类或 void,则此方法返回一个长度为 0 的数组。
Class
对象的数组,表示该类的所有 declared 成员
SecurityException
- 如果存在安全管理器 s,并满足下列任一条件:
s.checkMemberAccess(this, Member.DECLARED)
拒绝访问此类中已声明的类
s.checkPackageAccess()
的调用拒绝访问此类的包
public Field[] getDeclaredFields() throws SecurityException
Field
对象的一个数组,这些对象反映此 Class
对象所表示的类或接口所声明的所有字段。包括公共、保护、默认(包)访问和私有字段,但不包括继承的字段。
返回数组中的元素没有排序,也没有任何特定的顺序。如果该类或接口不声明任何字段,或者此 Class
对象表示一个基本类型、一个数组类或 void,则此方法返回一个长度为 0 的数组。
请参阅 Java Language Specification 的第 8.2 和 8.3 节。
Field
对象的数组
SecurityException
- 如果存在安全管理器 s,并满足下列任一条件:
s.checkMemberAccess(this, Member.DECLARED)
拒绝访问此类中已声明的字段
s.checkPackageAccess()
的调用拒绝访问该类的包
public Method[] getDeclaredMethods() throws SecurityException
Method
对象的一个数组,这些对象反映此 Class
对象表示的类或接口声明的所有方法,包括公共、保护、默认(包)访问和私有方法,但不包括继承的方法。
返回数组中的元素没有排序,也没有任何特定的顺序。如果该类或接口不声明任何方法,或者此 Class
对象
表示一个基本类型、一个数组类或 void,则此方法返回一个长度为 0 的数组。类初始化方法 <clinit>
不包含在返回数组中。如果该类声明带有相同参数类型的多个公共成员方法,则它们都包含在返回的数组中。
请参阅 Java Language Specification 第 8.2 节。
Method
对象的数组
SecurityException
- 如果存在安全管理器 s,并满足下列任一条件:
s.checkMemberAccess(this, Member.DECLARED)
拒绝访问该类中已声明的方法
s.checkPackageAccess()
的调用拒绝访问该类的包
public Constructor<?>[] getDeclaredConstructors() throws SecurityException
Constructor
对象的一个数组,这些对象反映此 Class
对象表示的类声明的所有构造方法。它们是公共、保护、默认(包)访问和私有构造方法。返回数组中的元素没有排序,也没有任何特定的顺序。如果该类存在一个默认构造方法,则它包含在返回的数组中。
如果此 Class
对象表示一个接口、一个基本类型、一个数组类或 void,则此方法返回一个长度为 0 的数组。
请参阅 Java Language Specification 第 8.2 节。
Constructor
对象的数组
SecurityException
- 如果存在安全管理器 s,并满足下列任一条件:
s.checkMemberAccess(this, Member.DECLARED)
拒绝访问该类中已声明的构造方法
s.checkPackageAccess()
的调用拒绝访问此类的包
public Field getDeclaredField(String name) throws NoSuchFieldException, SecurityException
Field
对象,该对象反映此 Class
对象所表示的类或接口的指定已声明字段。name
参数是一个 String
,它指定所需字段的简称。注意,此方法不反映数组类的 length
字段。
name
- 字段名
Field
对象
NoSuchFieldException
- 如果找不到带有指定名称的字段。
NullPointerException
- 如果 name
为 null
SecurityException
- 如果存在安全管理器 s,并满足下列任一条件:
s.checkMemberAccess(this, Member.DECLARED)
拒绝访问已声明字段
s.checkPackageAccess()
的调用拒绝访问该类的包
public Method getDeclaredMethod(String name, Class<?>... parameterTypes) throws NoSuchMethodException, SecurityException
Method
对象,该对象反映此 Class
对象所表示的类或接口的指定已声明方法。name
参数是一个 String
,它指定所需方法的简称,parameterTypes
参数是 Class
对象的一个数组,它按声明顺序标识该方法的形参类型。如果在某个类中声明了带有相同参数类型的多个方法,并且其中有一个方法的返回类型比其他方法的返回类型都特殊,则返回该方法;否则将从中任选一个方法。如果名称是 "<init>” 或 “<clinit>",则引发一个 NoSuchMethodException
。
name
- 方法名parameterTypes
- 参数数组
Method
对象
NoSuchMethodException
- 如果找不到匹配的方法。
NullPointerException
- 如果 name
为 null
SecurityException
- 如果存在安全管理器 s,并满足下列任一条件:
s.checkMemberAccess(this, Member.DECLARED)
拒绝访问已声明方法
s.checkPackageAccess()
的调用拒绝访问该类的包
public Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes) throws NoSuchMethodException, SecurityException
Constructor
对象,该对象反映此 Class
对象所表示的类或接口的指定构造方法。parameterTypes
参数是 Class
对象的一个数组,它按声明顺序标识构造方法的形参类型。
如果此 Class
对象表示非静态上下文中声明的内部类,则形参类型作为第一个参数包括显示封闭的实例。
parameterTypes
- 参数数组
Constructor
对象
NoSuchMethodException
- 如果找不到匹配的方法。
SecurityException
- 如果存在安全管理器 s,并满足下列任一条件:
s.checkMemberAccess(this, Member.DECLARED)
拒绝访问已声明的构造方法
s.checkPackageAccess()
的调用拒绝访问该类的包
public InputStream getResourceAsStream(String name)
ClassLoader.getSystemResourceAsStream(java.lang.String)
。
在委托前,使用下面的算法从给定的资源名构造一个绝对资源名:
modified_package_name/name
其中 modified_package_name 是此对象的包名,该名用 '/' 取代了 '.' ('\u002e')。
name
- 所需资源的名称
InputStream
对象;如果找不到带有该名称的资源,则返回 null
NullPointerException
- 如果 name 是 null
public URL getResource(String name)
ClassLoader.getSystemResource(java.lang.String)
。
在委托前,使用下面的算法从给定的资源名构造一个绝对资源名:
modified_package_name/name
其中 modified_package_name 是此对象的包名,该名用 '/' 取代了 '.' ('\u002e')。
name
- 所需资源的名称
URL
对象;如果找不到带有该名称的资源,则返回 null
public ProtectionDomain getProtectionDomain()
ProtectionDomain
。如果安装了安全管理器,则此方法首先通过 RuntimePermission("getProtectionDomain")
权限调用安全管理器的 checkPermission
方法,以确保可以获取 ProtectionDomain
。
SecurityException
- 若安全管理器存在,并且其 checkPermission
方法不允许获取 ProtectionDomain。ProtectionDomain
,
SecurityManager.checkPermission(java.security.Permission)
,
RuntimePermission
public boolean desiredAssertionStatus()
很少有程序员需要此方法;它是为 JRE 自身提供的。(它使类能够在初始化时确定是否启用断言。)注意,不保证此方法在(或将要)初始化指定类时返回与(或将与)该指定类相关的实际断言状态。
ClassLoader.setClassAssertionStatus(java.lang.String, boolean)
,
ClassLoader.setPackageAssertionStatus(java.lang.String, boolean)
,
ClassLoader.setDefaultAssertionStatus(boolean)
public boolean isEnum()
public T[] getEnumConstants()
public T cast(Object obj)
obj
- 要强制转换的对象
ClassCastException
- 如果该对象不是 null 也不能分配给类型 T。public <U> Class<? extends U> asSubclass(Class<U> clazz)
此方法的使用场合为:客户端需要“收缩转换” Class 对象的类型,以便将其传递给某个 API,且该 API 对它愿意接受的 Class 对象进行限制。强制转换会产生一个编译时警告,因为强制转换的正确性无法在运行时检查(因为常规类型是通过擦除实现的)。
ClassCastException
- 如果该 Class 对象不表示指定类的子类(这里“子类”包括该类本身)。public <A extends Annotation> A getAnnotation(Class<A> annotationClass)
AnnotatedElement
复制的描述
AnnotatedElement
中的 getAnnotation
annotationClass
- 对应于注释类型的 Class 对象
NullPointerException
- 如果给定的注释类为 nullpublic boolean isAnnotationPresent(Class<? extends Annotation> annotationClass)
AnnotatedElement
复制的描述
AnnotatedElement
中的 isAnnotationPresent
annotationClass
- 对应于注释类型的 Class 对象
NullPointerException
- 如果给定的注释类为 nullpublic Annotation[] getAnnotations()
AnnotatedElement
复制的描述
AnnotatedElement
中的 getAnnotations
public Annotation[] getDeclaredAnnotations()
AnnotatedElement
复制的描述
AnnotatedElement
中的 getDeclaredAnnotations
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。