import java.lang.reflect.Method;
public class Method01 {
public static void main(String[] args) throws Exception
{
String str="Admin";
Class<? extends Object> c = Class.forName(str);
Admin obj = (Admin) c.newInstance();
obj.setId("zhang3");
// System.out.print(obj);
// Method m = c.getMethod("setId",String.class); // 这里调用setId一个参数的函数。
Method m2 = c.getMethod("setId",String.class,String.class); // 第1 步: 给 SetId(Strng1.class,String.class)添加两个参数,
// m.invoke(obj, new Object[]{"penghao122"});
// m = c.getMethod("getId", new Class[]{});
// m.invoke(obj, new Object[]{});
m2.invoke(obj,"周杰伦","王力宏"); //第2步 :在这里调用俩个参数的函数setId,
}
}
class Admin
{
public Admin(){}
private String id = "";
public String getId()
{
System.out.print("\n" + id);
return id;
}
public void setId(String id)
{
this.id = id;
}
public void setId(String id,String id2) // 第三步: // SetId(Strng1.class,String.class) 这个对应这个参数函数。通过得到的结果得知:
//getMethod(obj,new Class{....})这个函数的第二个参数,这个数组用来添加的参数是为了
// 对应你在类中调用的函数。你写的这个 m.invoke(obj, new Object[]{});这里数组内没有添加参数,
// 所以调用的是空参的getId(); 希望你帮助你,
{
System.out.println(id+"..."+id2);
}
public String toString()
{
return id;
}
}
|
|