法的重载方法 ,initialize 指定在创建 Class对象时是否 初始 化这个类( 即是否执行 静态成
员,由于在一 次JVM 的执行 中,静态成 员的初始 化只 类加载的时候执行一 次,所以 如果
之前这个类 已经被 加载, 那么即使initialize 为true也不 会再次 执行 静态成 员的加载),
loader指 定使用 哪个类加载 器的实现类
(
Thread. currentThread ().getContextClassLoader()
可以获取 当前线程使用的类
加载 器)。 forName(***) 方法不 可以获取 基本 数据类型的 Class对象。
如果 要测试 initialize 是否 起作 用, 请不要在 main() 方法 测试自身 类, 因为 main()是静态方法 ,
执行这个 方法 会导 致静态域被初始 化,所以你的 initialize 无论是 true还 是false,效果都是一 样
的。
l asSubClass(Class superClass) :这个 方法 是将父 类的 class 对象 作为参 数传入 , 并
将其强制 转换成 当前的 Class 对象( 子类的 Class 对象)。
例:
Class<List> clazz = List. class ;
Class<? extends List> subClazz = ArrayList. class .asSubclass(clazz);
System. out .println(subClazz.getCanonicalName());
注意红色 的部分不 能写成 Class<ArrayList> 形 式,因为 asSubclass() 只知道 是要转 换成 子
类的 Class 对象, 但不知道 是哪个 子类。
l cast(Object o) : 这个 方法 是将传入 的对象 强制 转换成 Class 对象所 代表的类型的对
象;
l getClassLoader() :返回 创建 当前 Class 对象的类加载 器,默认 的, 应用程序获得的
是 sun.misc.Launcher$AppClassLoader , Applet 程 序 获 得 的 是
sun.applet.AppletClassLoader ;
l getCanonicalName() : 返回 JAVA 语言中所定义的底 层类的 规范 化名称,如果 没 有
规范 化名称就 返回 null ,对于 普通的引用数据类型,这个 方法 和 getName()方法 都返回
完整 的类 路径 ,对于数组(以 字符串 数组 为例 ),getName()返回
[Ljava.lang.String; ,
这个方法返回 java.lang.String[]
;
l getSimpleName() :返回 底层规范 化名称的简写 ,也就 是去掉包 名;
l getConstructors() :返回 Class 对象的 公有构造 器的 java.lang.reflect.Contructor 对象
数组, 如果 找 不到匹配 的构造方法 ,返回 NoSuchMethodExcetion 异常;
l getConstructor(Class<?> …parameterTypes) :按照指 定的可 变参数列 表,返回
符合参数条件 的公有构造方法 的 Constructor,这里 不可能是数组, 因为构造方法不 可能
重复 ,如果 找 不到匹配 的构造方法 ,返回 NoSuchMethodExcetion 异常;
l getDeclaredConstructors() : 返回 Class 对象的所有 构造 器的 Constructor 对象, 如
果找不到匹配 的构造方法 ,返回 NoSuchMethodExcetion 异常;
l getDeclaredConstructor(Class<?> …parameterTypes) :按照指 定的可 变参 数
列表,返回 符合 参数条件 的所有 构造方法 的 Constructor ,这里不可能是数组, 因为构造
方法不 可能 重复 ,如果 找不到匹配 的构造方法 ,返回 NoSuchMethodExcetion 异常;
l getFields() :获取 Class 对象的所有 公有成 员属性 的 java.lang.reflect.Field 数组 ;
l getField(String name) :按照 字段名称 获取 公有字段的 Field 对象,注 意 name 是区
分大小写 的;
l getDeclaredFields() :获取 Class 对象的所有 成员 属性 的 Field 数组 ;
l getDeclaredField(String name) :按照 字段名 称获取所有 字段 的 Field 对象,注 意
name 是 区分大小写 的;
l getMethods() : 获取 Class 对象的 公 有方法 (以 及从父 类继承 的方法 ,但不 包含 构造
评论0
最新资源