简单说,就是如何用invoke将a,b的值分别赋于同一个对象,再用其它方法调用a,b
解决方案 »
- 为什么放入TreeSet中的对象在实现了comparable接口后,曾经override过的equals,hashCode方法都不起作用了。
- java swing里组件的机构说明
- 一个反射理解问题
- 高手帮忙看看我这个程序为什么运行后没有什么反应,谢谢!!
- 帮忙看看代码哪错了.
- 如何设置快捷键在JInternalFrame之间进行切换
- 空指针异常
- 各位老大现在有用java开发桌面应用程序吗?用的数据库控件是jbuilder自带的吗?
- java连接SQLSERVER2008
- 使所有实现此接口(interface)的类拥有相同的构造器(contructor)?
- vector的简单问题
- package javax.servlet does not exist错误,以前的文章中的做法都不行!
{
public String a;
public String b;
public String sayHello()
{
return a+b;
}
public void setA(String s){
a=s;
}
public void setB(String s){
b=s;
}
public static void main(String a[])throws Exception
{
Object instance = Class.forName("CSDN").newInstance();
Class k=Class.forName("CSDN");Method m = k.getMethod("setA", new Class[]{String.class});
m.invoke(instance, new String[]{"Hello"});Method n = k.getMethod("setB", new Class[]{String.class});
n.invoke(instance, new String[]{"World!"});
n = k.getMethod("sayHello", new Class[]{});
Object result= n.invoke(instance, new Object[]{});
System.out.println(result);
}
}
虽然对a,b都进行了赋值,但m.invoke(p, args)的反回的对象却是不同的,一个returnObjectA,一个是returnObjectB
那么如何在通过invoke调用sayHello()方法时,可以调用初始化好的a和b呢?
>>
...介不废话嘛,你根本就没有用对还有没有看到你的p是哪里来得Class clazz = Class.forName("Hello");Hello hello = (Hello)clazz.newInstance();
Method a = clazz.getMethod("setA", new Class[]{String.class});
a.invoke(hello, new String[]{"hello, "});
Method b = clazz.getMethod("setB", new Class[]{String.class});
b.invoke(hello, new String[]{"buddy."});
Method say = clazz.getMethod("sayHello", new Class[]{});
TestCase.assertEquals("hello, buddy.", say.invoke(hello, null));