method.invoke取值的问题?
如何取得name的值?我写的有问题。
public class TestBean {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
/-----------------------------------------/
实例化,并负值
TestBean tb = new TestBean();
tb.setName("ok");
/-----------------------------------------/
我是这样写的:
beanClass = tb.getClass();
method = beanClass.getMethod("getName", new Class[] {});
Object value = method.invoke(beanClass,new Class[] {});
问题点数:20、回复次数:9Top
1 楼dl1125(上班)回复于 2004-04-04 16:58:38 得分 0
执行到value的时候报错Top
2 楼dl1125(上班)回复于 2004-04-04 17:12:09 得分 0
java.lang.IllegalArgumentException: object is not an instance of declaring classTop
3 楼shine333(enihs)回复于 2004-04-05 01:10:39 得分 0
method.invoke(tb, null);
a.x(); --> Method x = ......; x.invoke(a, null);
a.y(A, B) --> Method y = .....; y.invoke(a, new Object[] {A, B});Top
4 楼dl1125(上班)回复于 2004-04-05 11:25:28 得分 0
目的:我想通过getName() ,取得name的值。谢谢!!Top
5 楼qudong078(屈东)回复于 2004-04-05 21:46:06 得分 0
学习。。。Top
6 楼qudong078(屈东)回复于 2004-04-05 22:12:53 得分 15
试一下下面的代码,应该没什么问题
public class Test {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
import java.lang.reflect.Method;
/**
* @author sz-xjs-qud
*
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
public class MethodTest {
public static void main(String[] args) throws Exception{
Test test = new Test();
test.setName("test");
Class c = test.getClass();
Method m = c.getDeclaredMethod("getName",new Class[]{});
String str = (String) m.invoke(test,new Object[]{});
System.out.println("the str is :::::"+str);
}
}Top
7 楼toppi(从天而降)回复于 2004-04-05 22:16:40 得分 5
String value = (String)method.invoke(tb,null);
//建议最好给getMethod()返回的Method对象重新取一个名字
另外,也可以把
beanClass = tb.getClass();
method = beanClass.getmethod……;
用一句话代替:
Method i_method = TestBean.class.getMethod("getName",null);Top
8 楼qudong078(屈东)回复于 2004-04-05 22:17:12 得分 0
invoke 的第一个参数需要是一个实例,这样的话就对了。Top
9 楼dl1125(上班)回复于 2004-04-07 09:02:06 得分 0
马上就试一下!谢谢!!回来给分
Top




