|
方法名
|
功能说明
|
|
static Class forName(String name)
|
返回指定类名 name 的 Class 对象
|
|
Object newInstance()
|
调用缺省构造函数,返回该 Class 对象的一个实例
|
|
Object newInstance(Object []args)
|
调用当前格式构造函数,返回该 Class 对象的一个
实例
|
|
getName()
|
返回此 Class 对象所表示的实体(类、接口、数组
类、基本类型或 void)名称
|
|
Class getSuperClass()
|
返回当前 Class 对象的父类的 Class 对象
|
|
Class []
getInterfaces
()
|
获取当前 Class 对象的接口
|
|
ClassLoader getClassLoader()
|
返回该类的类加载器
|
|
Class getSuperclass()
|
返回表示此 Class 所表示的实体的超类的 Class
|
- //1、获取一个系统的类加载器
- ClassLoader loader=ClassLoader.getSystemClassLoader();
- System.out.println(loader);
- //2、获取系统类加载器的父类加载器
- loader=loader.getParent();
- System.out.println(loader);
- //3、测试当前类是由哪个类加载器加载的:
- loader=Class.forName("com.info.TestClass").getClassLoader();
- System.out.println(loader);
1、Field类用于操作类的属性 :
- Class<?> c1 = Class.forName("com.info.Person");
- Object s1 = c1.newInstance();
- // 获取某个属性
- Field field = c1.getDeclaredField("name");
- // 该属性设置为可访问
- field.setAccessible(true);
- System.out.println("field = " + field + " , " + field.get(s1));
- // 获取指定类的所有属性
- Field[] fields = c1.getDeclaredFields();
- for (Field f : fields) {
- f.setAccessible(true);
- System.out.println(f.getName() + " = " + f.get(s1));
- }
2、Method类用于操作类的方法
- Class<?> c1 = Class.forName("com.info.Person");
- Object s1 = c1.newInstance();
- // 获取某个类的指定含参方法
- Method m2 = c1.getDeclaredMethod("setId", String.class);
- m2.invoke(s1, "001");
- // 获取某个类的指定无参方法
- Method m1 = c1.getDeclaredMethod("getId");
- System.out.println(m1.invoke(s1));
- System.out.println("=======================");
- // 获取指定类的所有方法
- Method[] methods = c1.getDeclaredMethods();
- for (Method method : methods) {
- method.setAccessible(true);
- System.out.println(method.getName());
- }
- System.out.println("=======================\n")
- Class<?> c1 = Class.forName("com.info.Person");
- // 获取带有指定参数列表的构造方法的Constructor对象
- Constructor<?> cs = c1.getDeclaredConstructor(String.class,
- String.class);
- Object s1 = cs.newInstance("001","李四");
- System.out.println(s1);
- // 获取指定类的所有构造器
- Constructor<?>[] constructors = c1.getDeclaredConstructors();
- for (Constructor<?> constructor : constructors) {
- System.out.println("constructor = " + constructor);
- }