Java反射

40 阅读1分钟

什么是反射?

反射之所以被称为框架的灵魂是因为它赋予了我们在运行时分析类以及执行类中方法的能力。

通过反射可以获取任意一个类的所有属性和方法,还可以调用这些方法和属性。

反射有哪些应用

Spring/Spring Boot 、Mybatis等框架中大量使用了反射机制。

这些框架中大量使用了动态代理,而动态代理实现依赖反射机制。

Java注解也使用了反射机制

java反射示例:

public class People {
    private int age;
    public int getAge(){
        return this.age;
    }
    public void setAge(int age){
        this.age = price;
    }
    public static void main(String [] args) throws Exception{
        // 正常构造People对象
        People people = new People();
        people.setAge(18);
        System.out.println("People's age: "+people.getAge());
        // 反射调用
        Class clz = Class.forName("com.xxxx.model.People");
        Method setAgeMethod = clz.getMethod("setAge",int.class);
        Constructor peopleConstructor = clz.getConstructor();
        Object peopleObj = peopleConstructor.newInstance();
        setPriceMethod.invoke(peopleObj, 19);
        Method getAgeMethod = clz.getMethod("getAge");
        System.out.println("People Age: "+ getAgeMethod.invoke());
   }
}