package d18_4_1;
/**
* 创建对象1
*/
import java.io.FileInputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
public class ObjectPoolFactory {
private Map<String, Object> map = new HashMap<String, Object>();
// 创建对象
private Object createObject(String className)
throws ClassNotFoundException, InstantiationException,
IllegalAccessException {
Class<?> claxx = Class.forName(className);
return claxx.newInstance();
}
// 初始化对象池
public void initPool(String fileName) throws IOException {
FileInputStream fis = null;
try {
fis = new FileInputStream(fileName);
Properties p = new Properties();
p.load(fis);
for (String name : p.stringPropertyNames()) {
map.put(name, p.getProperty(name));
}
} catch (Exception e) {
System.out.println("读取" + fileName + "异常");
} finally {
if (fis != null) {
fis.close();
}
}
}
// 从对象池中取出指定name对应的对象
public Object getObject(String name) {
return map.get(name);
}
public static void main(String[] args) throws IOException {
ObjectPoolFactory pool=new ObjectPoolFactory();
pool.initPool("obj.text");
pool.getObject("a");
}
}
package d18_4_1;
/**
* 创建对象2
*/
import java.lang.reflect.Constructor;
public class CreateObject2 {
public static void main(String[] args) throws Exception {
Class c = Test2.class;
Constructor con = c.getDeclaredConstructor(String.class);
Object newInstance = con.newInstance("zhangsan");
System.out.println(newInstance);
}
}
class Test2 {
private String name;
private int age;
String sex;
private Test2() {
}
protected Test2(String name) {
super();
this.name = name;
}
public Test2(String name, int age) {
super();
this.name = name;
this.age = age;
}
public Test2(String name, int age, String sex) {
super();
this.name = name;
this.age = age;
this.sex = sex;
}
@Override
public String toString() {
return "Test2 [name=" + name + ", age=" + age + ", sex=" + sex + "]";
}
}