[Java]关于如何反射一个有构造参数的对象

这个要反射构建的类,见代码:

class Person {
	String name;

	public Person() {
	}

	// private Person(int i) {
	//
	// }

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

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

	// public Person(String name,int name1) {
	// this.name = name;
	// }

	public void show() {
		System.out.println(this.name);
	}
}

这里是反射方法:

Person person = null;
// 反射得到一个Person类,这里不是对象!!
Class cc = Class.forName("designPattern.Person");
// 拿到所有Person的所有构造器
for (Constructor c : cc.getConstructors()) {
	if (c.getParameterTypes().length > 1) {
		//事实证明Constructor.getParameterTypes方法只是计算参数个数,即使2个参数同是String类型,它也返回2
		System.out.println(c.getParameterTypes()[1]);
	}
	//直到找到一个有且仅有一个String类型作为参数的构造方法并传入参数创建实例
	if (c.getParameterTypes().length == 1) {
		if (c.getParameterTypes()[0].equals(new String().getClass())) {
			person = (Person) c.newInstance("chris");
		}
	}
}
person.show();

posted @ 2013-07-22 21:31  hhhyde  阅读(512)  评论(0编辑  收藏  举报