使用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}