Java反射机制

什么叫反射

Java中我们创建对象一般都是用“new”这个关键字的,例如

1
2
Person p = new Person();
p.setName("Ervin");

反射则是一开始不知道要初始化的对象是什么,所以没办法new出一个对象,这时候就需要用到反射,例如我们使用第三方SDK的时候有可能没有提供api,只能通过反射去获取类中的方法等。按照上面生成对象的例子,使用反射是这样的

1
2
3
4
5
6
Class cls = Class.forName("com.ervin.entity.Person");
Method method = cls.getMethod("setName", String.class);
//Object person = cls.newInstance();
Constructor constructor = cls.getConstructor();
Object person = constructor.newInstance();
method.invoke(person, "Ervin");

直接new对象是静态模式,在代码编译前就知道需要生成什么对象;反射是在运行时才知道要生成什么类,是动态的