类 java.lang.Class
java.lang.Object
|
+----java.lang.Class
- public final class Class
- extends Object
- implements Serializable
Class 类实例表示当前运行的 Java 应用程序中的类和接口。
每个数组均属于一个 Class 类对象,所有具有相同元素类型和维数的数组共享一个 Class 对象。基本的 Java 类型(boolean, byte, char, short, int, long, float 和
double) 和 void 类型也可表示为 Class 对象。
对于 Class 类,没有公共构造子。
当各类被调入时,由 Java 虚拟机自动创建 Class 对象,或通过类装载器中的 defineClass 方法生成。
以下示例使用 Class 对象显示一个对象的 Class 名:
void printClassName(Object obj) {
System.out.println("The class of " + obj +
" is " + obj.getClass().getName());
}
- 来自:
- JDK1.0
- 参见:
- defineClass
方法索引
- forName(String)
- 返回给定串名相应的
Class 对象。
- getClasses()
- 此方法未实现。
- getClassLoader()
- 获取该类的类装载器。
- getComponentType()
- 如果当前类表示一个数组,则返回表示该数组组件的 Class 对象,否则返回 null。
- getConstructor(Class[])
- 返回当前 Class 对象表示的类的指定的公有构造子对象。
- getConstructors()
- 返回当前 Class 对象表示的类的所有公有构造子对象数组。
- getDeclaredClasses()
- 此方法未实现。
- getDeclaredConstructor(Class[])
- 返回当前 Class 对象表示的类的指定已说明的一个构造子对象。
- getDeclaredConstructors()
- 返回当前 Class 对象表示的类的所有已说明的构造子对象数组。
- getDeclaredField(String)
- 返回当前 Class 对象表示的类或接口的指定已说明的一个域对象。
- getDeclaredFields()
- 返回当前 Class 对象表示的类或接口的所有已说明的域对象数组。
- getDeclaredMethod(String, Class[])
- 返回当前 Class 对象表示的类或接口的指定已说明的一个方法对象。
- getDeclaredMethods()
- 返回 Class 对象表示的类或接口的所有已说明的方法数组。
- getDeclaringClass()
- 此方法未实现。
- getField(String)
- 返回当前 Class 对象表示的类或接口的指定的公有成员域对象。
- getFields()
- 返回当前 Class 对象表示的类或接口的所有可访问的公有域对象数组。
- getInterfaces()
- 返回当前对象表示的类或接口实现的接口。
- getMethod(String, Class[])
- 返回当前 Class 对象表示的类或接口的指定的公有成员方法对象。
- getMethods()
- 返回当前 Class 对象表示的类或接口的所有公有成员方法对象数组,包括已声明的和从父类继承的方法。
- getModifiers()
- 返回该类或接口的 Java 语言修改器代码。
- getName()
- 返回 Class 对象表示的类型(类、接口、数组或基类型)的完整路径名字符串。
- getResource(String)
- 按指定名查找资源。
- getResourceAsStream(String)
- 用给定名查找资源。
- getSigners()
- 获取类标记。
- getSuperclass()
- 如果此对象表示除 Object 外的任一类, 那么返回此对象的父类对象。
- isArray()
- 如果 Class 对象表示一个数组则返回 true, 否则返回 false。
- isAssignableFrom(Class)
- 判定 Class 对象表示的类或接口是否同参数指定的 Class 表示的类或接口相同,或是其父类。
- isInstance(Object)
- 此方法是 Java 语言
instanceof 操作的动态等价方法。
- isInterface()
- 判定指定的 Class 对象是否表示一个接口类型。
- isPrimitive()
- 判定指定的 Class 对象是否表示一个 Java 的基类型。
- newInstance()
- 创建类的新实例。
- toString()
- 将对象转换为字符串。
方法
toString
public String toString()
- 将对象转换为字符串。 字符串由
"class" 或
"interface"、一个空格和该类的完整路径名组成。如果当前 Class 对象表示一个基本类型,则返回基本类型名。
- 返回值:
- 表示当前类对象的字符串。
- 覆盖:
- 类 Object 中的
toString
forName
public static native Class forName(String className) throws ClassNotFoundException
- 返回给定的字符串名对应的
Class 对象。
若给定一个类或接口的完整路径名,那么此方法将试图定位、装载和连接该类。若成功,返回该类对象。否则,抛出 ClassNotFoundException 异常。
例如,下面代码段返回名为 java.lang.Thread 的运行
Class 描述器。
Class t = Class.forName("java.lang.Thread")
- 参数:
- className - 期望类的全路径名。
- 返回值:
- 指定名的
Class 描述器。
- 抛出:
ClassNotFoundException
- 如果没有发现该类。
newInstance
public native Object newInstance() throws InstantiationException, IllegalAccessException
- 创建类的一个实例。
- 返回值:
- 此对象表示的类的新分配的实例。效果与用一个空参数列表调用
new 相似。
- 抛出:
IllegalAccessException
- 如果该类或初始化方法不可访问。
- 抛出:
InstantiationException
- 如果应用程序试图实例化一个抽象类或接口,或由于某种原因导致实例化过程失败。
isInstance
public native boolean isInstance(Object obj)
- 此方法是 Java 语言
instanceof 操作的动态等价方法。 如果指定的 Object 参数非空,且该类不生成 ClassCastException 异常的引用,则返回 true, 否则返回 false。
特别地,当该类表示一个已声明的类时,若指定的
Object 是该类(或其任一父类)的一个实例则返回 true,否则返回
false。若该类是一数组类,且指定的 Object 能通过转换运算、或转换运算的扩充引用,转换为一个数组对象,那么返回 true;否则返回
false。 若该类是接口类,如果指定的 Object 参数类或其任一父类实现了此接口则返回 true;否则返回 false。如果该类是基类型类,则返回 false。
- 参数:
- obj - 检查的对象。
isAssignableFrom
public native boolean isAssignableFrom(Class cls)
- 判定 Class 对象表示的类或接口是否同参数指定的 Class 表示的类或接口相同,或是其父类或父接口。 如果成立则返回 true,否则返回 false。若该类是基类型类,且指定的类参数恰为此类则返回 true,否则返回 false。
特别地,通过标别转换或其扩展引用,此方法将测试指定的 Class 参数表示的类型能否转换为当前 Class 对象表示的类型,关于更详细信息,请参看 The Java Language
Specification 的 5.1.1 和 5.1.4 节。
- 抛出:
NullPointerException
- 如果指定的类参数为 null。
isInterface
public native boolean isInterface()
- 判定指定的 Class 对象是否表示一个接口。
- 返回值:
- 如果当前对象表示一个接口则为
true;否则为
false 。
isArray
public native boolean isArray()
- 如果当前 Class 对象表示一个数组类型则返回 true, 否则返回 false。
isPrimitive
public native boolean isPrimitive()
- 判定指定 Class 对象是否表示一个 Java 的基类型。
有九个预定义的类,表示八个基本类型和 void。这些类通过 Java
虚拟机创建,具有与其表示的基类型相同的名称,分别为
boolean, byte, char, short, int,
long, float, double 和 void。
这些对象仅能通过下列公有的、静态的、最终的变量访问,这些对象也是使该方法返回 true 的仅有的类对象。
- 参见:
- TYPE, TYPE, TYPE, TYPE, TYPE, TYPE, TYPE, TYPE, TYPE
getName
public native String getName()
- 返回 Class 对象表示的类型(类、接口、数组或基类型)的完整路径名串。
- 返回值:
- 当前对象表示的类或接口的全路径名。
getClassLoader
public native ClassLoader getClassLoader()
- 获取此类的类装载器。
- 返回值:
- 创建当前对象表示的类或接口的类装载器;如果没有创建此类的装载器则为
null。
- 参见:
- ClassLoader
getSuperclass
public native Class getSuperclass()
- 如果当前对象表示除 Object 类外的任一类, 那么返回此对象的父类对象。
如果当前对象是 Object 类或表示一个接口则返回
null 。
- 返回值:
- 此类的父类。
getInterfaces
public native Class[] getInterfaces()
- 返回此对象表示的类或接口实现的接口。
如果该对象表示一个类,则返回一个包含此类实现的所有接口的对象数组。数组中接口对象的顺序,与此类 implements 宣称子句中的接口顺序一致。
如果当前对象表示一个接口,则返回包含此接口扩充的所有接口对象的数组。数组中接口对象的顺序,与该接口 extends 声明子句中的接口名顺序一致。
如果此类或接口未实现接口,则返回长度为零的数组。
- 返回值:
- 该类实现的接口数组。
getComponentType
public native Class getComponentType()
- 如果此类表示一个数组,则返回表示该数组组件的 Class 对象,否则返回 null。
- 参见:
- Array
getModifiers
public native int getModifiers()
- 返回该类或接口的 Java 语言修饰词代码。 修饰词由
Java 虚拟机的 public, protected,
private, final, 和 interface 对应的常量组成;使用 Modifier 类的方法对它们译码。
Java 虚拟机规范 中定义了修饰词编码,如表 4.1。
- 参见:
- Modifier
getSigners
public native Object[] getSigners()
- 获取类标记。
getDeclaringClass
public Class getDeclaringClass()
- 此方法未实现。
如果当前类或接口是另一类的成员,则返回此类
(它是 声明类)。如果此类或接口不是另一类的成员则返回 null。
getClasses
public Class[] getClasses()
- 此方法未实现。
返回一个容纳 Class 对象的数组,它表示了所有的公有类和接口,这些类和接口是 Class 对象代表的类的成员。
包含从父类继承的公有接口类,和此类声明的公有类和接口成员。如果该类没有公有成员类和接口,或是基类型类,则返回长度为零的数组。
getFields
public Field[] getFields() throws SecurityException
- 返回一个容纳 Field 对象的数组,该数组表示了 Class 代表的类或接口所有的可访问的公有域。如果该类或接口没有可访问的属性,或者它为数组类或基类型类,则返回长度为零的数组。
特殊地,如果此对象是类,则返回该类和其所有父类的公有域。如果是一接口,则返回该接口和其所有父类的域。 如果是数组或基类型,则返回一长度为 0 的数组。
此方法不影响数组类型的隐含长度域。用户代码应使用数组类的方法处理数组。
参看 The Java Language
Specification 的 8.2 和 8.3 节。
- 抛出:
SecurityException
- 如果拒绝访问此信息。
- 参见:
- Field
getMethods
public Method[] getMethods() throws SecurityException
- 返回一个容纳 Method 对象的数组,该数组表示了 Class 代表的类或者接口所有的公有 member 方法,包括已声明的和从父类继承的方法。 如果该类或接口没有公有成员方法,则返回长度为零的数组。
参看 The Java Language
Specification 的 8.2 和 8.4 节。
- 抛出:
SecurityException
- 如果拒绝访问此信息。
- 参见:
- Method
getConstructors
public Constructor[] getConstructors() throws SecurityException
- 返回一个容纳 Constructor 对象的数组,它表示该 Class 对象代表的类的所有公有构造子。如果该类没有公有构造子,则返回一长度为零的数组。
- 抛出:
SecurityException
- 如果拒绝访问此信息。
- 参见:
- Constructor
getField
public Field getField(String name) throws NoSuchFieldException, SecurityException
- 返回一个 Field 对象,它表示该 Class
对象代表的类或接口的指定的公有成员域。name 参数是一个 String ,它指定所要域的简单名。
用给定名,查询该类或接口的所有成员域,返回对应的公有域。
参看 The Java Language
Specification 的 8.2 和 8.3 节。
- 抛出:
NoSuchFieldException
- 如果找不到给定名域。
- 抛出:
SecurityException
- 如果拒绝访问此信息。
- 参见:
- Field
getMethod
public Method getMethod(String name,
Class parameterTypes[]) throws NoSuchMethodException, SecurityException
- 返回一个 Method 对象,它表示 Class 对象代表的类或接口的指定的公有成员方法。name 参数是一个 String ,它指定所要方法的简单名称,,parameterTypes 是识别此方法形参类型的 Class 对象的数组,形参以声明的顺序存放在此数组中。
用给定名和形参,查询该类或接口的所有成员方法,返回对应的公有方法。
参看 The Java Language
Specification 的 8.2 和 8.4 节。
- 抛出:
NoSuchMethodException
- 如果找不到一个匹配方法。
- 抛出:
SecurityException
- 如果拒绝访问此信息。
- 参见:
- Method
getConstructor
public Constructor getConstructor(Class parameterTypes[]) throws NoSuchMethodException, SecurityException
- 返回 Class 对象表示的类的指定公有构造子对象。
parameterTypes 是识别此构造子形参类型的对象类的数组,形参以声明的顺序存放在此数组中。
用恰当的形参,查询该类的所有构造子,返回对应的公有构造子。
- 抛出:
NoSuchMethodException
- 如果找不到一个匹配方法。
- 抛出:
SecurityException
- 如果拒绝访问此信息。
- 参见:
- Constructor
getDeclaredClasses
public Class[] getDeclaredClasses() throws SecurityException
- 此方法未实现。
返回一个容纳 Method 对象的数组,它表示被声明为 Class 对象代表的类的成员的所有类和接口。 包括该类已声明的公有的、保护的、缺省(包)访问的和私有的类和接口,不包括继承的类和接口。如果该类没有声明的成员类和接口,或者此类是基类型类,则返回长度为零的数组。
- 抛出:
SecurityException
- 如果拒绝访问此信息。
getDeclaredFields
public Field[] getDeclaredFields() throws SecurityException
- 返回一个容纳 Field 对象的数组,它表示了 Class 对象代表的的类或接口的声明的所有域。 包括公有的、保护的、缺省(包)访问的和私有的域,不包括继承域。 如果该类或接口没有声明域,或者此类是基类型类,则返回长度为零的数组。
参看 The Java Language
Specification 的 8.2 和 8.3 节。
- 抛出:
SecurityException
- 如果拒绝访问此信息。
- 参见:
- Field
getDeclaredMethods
public Method[] getDeclaredMethods() throws SecurityException
- 返回一个容纳 Method 对象的数组,它表示 Class
对象代表的类或接口声明的所有方法。
包括公有的、保护的、缺省(包)访问的和私有的方法,不包括继承的方法。 如果该类或接口没有声明方法,或者此类是基类型类,则返回长度为零的数组。
参看 The Java Language
Specification 的 8.2 节。
- 抛出:
SecurityException
- 如果拒绝访问此信息。
- 参见:
- Method
getDeclaredConstructors
public Constructor[] getDeclaredConstructors() throws SecurityException
- 返回该类所有已说明的构造子对象数组。 它们是公有的、保护的、缺省(包)访问的和私有的构造子。如果该类是接口类或基类型类,则返回长度为零的数组。
参看 The Java Language
Specification 的 8.2 节。
- 抛出:
SecurityException
- 如果拒绝访问此信息。
- 参见:
- Constructor
getDeclaredField
public Field getDeclaredField(String name) throws NoSuchFieldException, SecurityException
- 返回一个容纳 Method 对象的数组,它表示 Class 对象代表的类或接口的指定的已声明的域。。 name 参数是一个 String, 指定所要域的名称。
- 抛出:
NoSuchFieldException
- 如果找不到给定名域。
- 抛出:
SecurityException
- 如果拒绝访问此信息。
- 参见:
- Field
getDeclaredMethod
public Method getDeclaredMethod(String name,
Class parameterTypes[]) throws NoSuchMethodException, SecurityException
- 返回一个 Method 对象,它表示该 Class 对象代表的类或接口的指定的已声明的方法。 name 参数是一个 String ,它指定所要方法的简单名称,parameterTypes 是识别此方法形参类型的对象类的数组,形参以声明的顺序存放在此数组中。
- 抛出:
NoSuchMethodException
- 如果找不到一个匹配方法。
- 抛出:
SecurityException
- 如果拒绝访问此信息。
- 参见:
- Method
getDeclaredConstructor
public Constructor getDeclaredConstructor(Class parameterTypes[]) throws NoSuchMethodException, SecurityException
- 返回一个 Construcor 对象,它表示该 Class 对象代表的类或接口的指定的已声明的构造子。
parameterTypes 是识别此构造子形参类型的对象类的数组,形参以声明的顺序存放在此数组中。
- 抛出:
NoSuchMethodException
- 如果找不到一个匹配方法。
- 抛出:
SecurityException
- 如果拒绝访问此信息。
- 参见:
- Constructor
getResourceAsStream
public InputStream getResourceAsStream(String name)
- 用给定名查找资源。 若没有相应的资源,则返回 null。此类的 ClassLoader 实现了查找给定类相关的资源的规则。
使用名称转换运算:如果资源名以 "/" 开始则不作变换,否则将 "." 转换为“/
”,且追加包名。转换后 Class 方法替换 ClassLoader 方法。
- 参数:
- name - 查找的资源串
- 返回值:
- 具有给定名的
InputStream 对象,若找不到此资源,则为null。
- 参见:
- ClassLoader, getResource
getResource
public URL getResource(String name)
- 按指定名查找资源。 此类的装载类实现了查找给定类相关的资源的规则。
使用名称转换运算之后 Class 方法将替换 ClassLoader 方法。名称转换运算规则为:如果资源名以 "/" 开始则不作变换,否则将 "." 转换为 "/ ",且追加包名。
- 参数:
- name - 查找的资源串
- 返回值:
- 具有给定名的
URL 对象,若找不到此资源,则为null。
- 参见:
- ClassLoader, getResourceAsStream

