← 返回首页
JavaSE系列教程(八十三)
发表时间:2020-02-26 21:26:20
反射综合实例

使用java IO流和反射实现通过读取属性文档,动态生成一个Person类的对象。

代码如下:

1.在src根目录下创建属性文档,person.properties

className=demo3.Person
name=张三丰
gender=男
age=50

2.编写测试类。

package demo3;

import java.io.InputStream;
import java.lang.reflect.Constructor;
import java.util.Properties;

class Person{

    private String name;
    private String gender;
    private int age;

    private Person() {
    }


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

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

public class ReflectionDemo {

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

        Properties properties = new Properties();
        InputStream in = ReflectionDemo.class.getClassLoader().getResourceAsStream("person.properties");
        properties.load(in);

        String className = properties.getProperty("className");
        String name = properties.getProperty("name");
        String gender = properties.getProperty("gender");
        int age = Integer.parseInt(properties.getProperty("age"));

        Class clazz = Class.forName(className);
        Constructor constructor = clazz.getDeclaredConstructor(String.class,String.class,int.class);
        Person p = (Person) constructor.newInstance(name,gender,age);
        System.out.println(p);
    }
}

运行结果:
Person{name='张三丰', gender='男', age=50}