1、内省的关键类,Introspector 、BeanInfo 、PropertyDescriptor、MethodDescriptor。主要是用来访问javabean的,在反射的基础上实现的,用于操作set、get方法。
2、反射的关键类,Method、Field、Constructor,通过解析class对象来操作字节码中的方法、属性和构造函数;
反射的作用,可以不用引入具体实现类来降低耦合性,简单的例子;
a、定义接口
/**
* 处理接口,定义一个方法,多个实现类
* @author hz16092620
* @date 2018年4月3日 下午3:59:39
* @version
*/
public interface ActionHandler {
void handler();
}
b、定义实现类
/**
* @author hz16092620
* @date 2018年4月3日 下午4:01:06
* @version
*/
public class ChinaActionHandler implements ActionHandler {
@Override
public void handler() {
System.out.println("中国处理。。。。");
}
}
/**
* @author hz16092620
* @date 2018年4月3日 下午4:01:37
* @version
*/
public class AmericanActionHandler implements ActionHandler {
@Override
public void handler() {
System.out.println("美国处理。。。");
}
}
c、测试类
/**
* @author hz16092620
* @date 2018年4月3日 下午4:03:05
* @version
*/
public class TestReflect {
public static void main(String[] args) {
test1();
}
public static void test1() {
try {
ActionHandler ah = (ActionHandler) Class.forName("cn.liu.hui.peng.invoke.impl.ChinaActionHandler").newInstance();
ah.handler();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
打印结果:
中国处理。。。。