1.什么是反射机制?
java中的反射机制是指在运行的状态中,对于任意一个类都能知道这个类所有的属性和方法,并且对于任意一个对象,都能够调用它的任意一个方法;这种动态获取信息以及动态调用对象方法的功能就是java的反射机制。
2.java反射使用的步骤
1.获取想要操作的类Class对象,它是反射的核心,通过Class对象我们可以任意调用类的方法。
2.调用Class类中的方法,既就是反射的使用阶段。
3.使用反射API来操作这些信息。
3.获取Class对象的3种方法
我们首先创建一个person的对象:
public class Person {
private String name = "小米";
private int age = 15;
public void test(String str) {
System.out.println(str);
}
public void test2() {
System.out.println("tset22");
}
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
public Person() {
super();
}
}
1.第一种调用person 对象的getClass()方法
Person person = new Person();
Class m2 = person.getClass();
2.调用person 对象的class属性来获取该类对应的Class对象
Class clazz = Person.class;
3.使用class类中的forname()静态方法(最安全,性能最好)
Class<?> clazz3 = Class.forName("reflex.Person");
4.获取类中所有的方法、成员属性、所有构造方法
1.获取Person 类中所有方法
Method[] methods = m2.getDeclaredMethods();
for (Method method : methods) {
System.out.println(method);
}
2.获取Person类中所有成员属性
Field[] fields = m2.getDeclaredFields();
for (Field field : fields) {
System.out.println(field.toString());
}
3.获取person类中所有构造方法
Constructor[] constructors = m2.getDeclaredConstructors();
for (Constructor constructor : constructors) {
System.out.println(constructor);
}
5.调用对象的方法
Method method = clazz.getMethod("test2");
Method method2 = clazz.getMethod("test",String.class);
method.invoke(clazz.newInstance());
method2.invoke(clazz.newInstance(),"dddd");
测试结果:
感谢观看!