码迷,mamicode.com
首页 > 编程语言 > 详细

Java反射

时间:2018-04-29 19:57:55      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:win   反射机制   rri   oid   proc   容器   指定   obj   value   

Java反射可以在程序运行时,生成对象,修改对象。JDK提供了Class, Constructor, Method等对象实现反射。

在spring框架中,使用ioc,面向接口编程。这个时候,我们申明对象是一个接口类型,具体实现是什么类型,可以通过配置文件指定。这个时候编译程序是不知道具体类型是什么的,需要spring ioc容器去实例化具体的对象。这里在配置文件配置了如<bean id= "XXX" class= "xxx.xxx.xx"/>这个时候就可以通过反射获取对象的实例。

下面是一个反射demo,通过xxx.xxx.xx实例化对象。spring实例化了对象可以把对象注入到容器中,如map中

Person.java

import com.alibaba.fastjson.JSON;

public class Person {
    private String name;
    private Integer age;

    public Person() {

    }

    public Person(String name, Integer age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }


    @Override
    public String toString(){
        return JSON.toJSONString(this);
    }
}

测试demo

public static void main(String[] args) throws Exception {
        testInstance();
    }


    private static void testInstance() throws Exception {
        String classPackage = "com.gxf.reflect.Person";
        Class clazz = Class.forName(classPackage);
        Class[] params = {String.class, Integer.class};
        Object[] values = {"guanxiangfei", 28};
        Constructor constructor = clazz.getConstructor(params);
        Person guanxiangfei = (Person) constructor.newInstance(values);
        System.out.println(guanxiangfei);

    }

输出

{"age":28,"name":"guanxiangfei"}

Process finished with exit code 0

通过xx.xx.xx实例化对象,很多框架都用到了反射机制。很多博客说反射性能不好,这个需要在研究一下。

 

Java反射

标签:win   反射机制   rri   oid   proc   容器   指定   obj   value   

原文地址:https://www.cnblogs.com/luckygxf/p/8971637.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!