JAVA反射机制详细总结

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"); 

测试结果:
JAVA反射机制详细总结_第1张图片
感谢观看!

你可能感兴趣的:(JAVA基础)