package iotest;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.*;
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!");
}
}
public class strcont
{
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", "中国");
Bean1 b = new Bean1();
Class A = Class.forName("Bean1");
Method m = A.getMethod("helloworld", new Class[]{String.class});
m.invoke(b, new Object[]{"yeye"});
}
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);
}
}