反射中的构造函数类可以获取某个类的构造函数,并用它创建类的实例:
例如:
1,反射使用无参数的构造函数生成实例
2,反射使用一个字符串参数的构造函数生成实例
3,反射使用一个字符串参数的方法生成方法并调用
package test.jdbc.reflect;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
public class ReflectTest {
public static void main(String[] args) throws Exception {
// 反射使用无参数的构造函数生成实例
Object o = getObj(Bean1.class);
((Bean1) o).message();
// 反射使用一个字符串参数的构造函数生成实例
o = getObj(Bean1.class, "HELL FIRE");
((Bean1) o).message();
// 反射使用一个字符串参数的方法生成方法并调用
getObjMed(Bean1.class, "helloworld", "中国");
}
public static Object getObj(Class clazz) throws Exception {
Constructor con = clazz.getConstructor();
return con.newInstance();
}
public static Object getObj(Class clazz, String param) throws Exception {
Constructor con = clazz.getConstructor(String.class);
return con.newInstance(param);
}
public static void getObjMed(Class clazz, String name, String param)
throws Exception {
Constructor con = clazz.getConstructor(String.class);
Method m = clazz.getMethod(name, String.class);
m.invoke(getObj(clazz), param);
}
}
class Bean1 {
private String name = null;
public Bean1() {
}
public Bean1(String name) {
this.name = name;
}
public void message() {
System.out.println(" name is " + this.name);
System.out.println("Hello world!");
}
public void helloworld(String name) {
System.out.println("hi " + name + " ! This is a nice world!");
}
}
运行结果:
name is null
Hello world!
name is HELL FIRE
Hello world!
hi 中国 ! This is a nice world! |