反射(一)-通过Class实例化任意类的对象

package com.weigu.xiaochuang.reflection;

/**
 * 显式声明空的构造函数有时候也是一种很好的习惯。当你要使用反射时,一定不要忘记空的构造。
 * 一个对象在new之前,堆里是不会分配内存的。因此这个UserInfo的实例是通过Class的实例得到的
 */
public class UserInfo {
    private int userId;
    private String name;
    private int age;

    @Override
    public String toString() {
        return "UserInfo{" +
                "userId=" + userId +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public int getUserId() {
        return userId;
    }

    public void setUserId(int userId) {
        this.userId = userId;
    }

    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;
    }

    /**
     * 通过Class实例化任意类的对象
     *
     * @param args
     */
    public static void main(String[] args) {
        Class<UserInfo> c = UserInfo.class;   //获得Class类的实例

        UserInfo userInfo = null;

        try {
            userInfo = c.newInstance();    //通过class类的实例获取UserInfo实例
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
        userInfo.setAge(10);
        userInfo.setUserId(1);
        userInfo.setName("Squee,Spleen and Goblin");

        System.out.println(userInfo);
    }
}

猜你喜欢

转载自blog.csdn.net/wb_zjp283121/article/details/89465072