package com.xuz.csdn.aug4;import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Method;public class ReflectTest { public static void main(String[] args) { Class c = MyClass.class;
反射机制的基本用处是:通过字符串 创建对象,调用方法,设置属性值这个是所有基于配置的框架的基础,想象那些XML中的类名或者方法是怎么被invoke的假设你有一组类,可以写一个(仅一个)基于反射的程序,读入不同的xml文件,执行得到不同的效果,这是我理解的基于配置的程序;而一个普通的程序 new 对象 调用方法,你可以预期其执行过程和效果,而反射的话就不知道了,配置决定
Java的反射机制的实现要借助于4个类:class,Constructor,Field,Method;
其中class代表的时类对 象,Constructor-类的构造器对象,Field-类的属性对象,Method-类的方法对象。通过这四个对象我们可以粗略的看到一个类的各个组 成部分。
扩展一点说,就是根据名字String, 能够创建对象,获得CLass,Instance的一些相关信息。
import java.lang.reflect.Field;
import java.lang.reflect.Method;public class ReflectTest { public static void main(String[] args) {
Class c = MyClass.class;
try {
Constructor<?> cons = c.getConstructor(String.class);
System.out.println(cons);
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
Field[] fields = c.getDeclaredFields();
for (Field field : fields) {
System.out.println(field);
}
Method[] methods = c.getDeclaredMethods();
for (Method method : methods) {
System.out.println(method);
}
}}
如果有AClass这个类或方法的话,就可以通过反射由a或者"AClass"得到这个类或方法