我用java反射调用set方法
m = c.getDeclaredMethod("setGName", new Class[] { String.class });要报错
我在用这个方式,也要报错,
m = c.getDeclaredMethod("setGName", String.class );
为什么啊,
报错一点提示都没,
就是报com.jb.xd.users.setGName
我用java反射调用set方法
m = c.getDeclaredMethod("setGName", new Class[] { String.class });要报错
我在用这个方式,也要报错,
m = c.getDeclaredMethod("setGName", String.class );
为什么啊,
报错一点提示都没,
就是报com.jb.xd.users.setGName
你的users是不是没有无参构造?只有带参构造?
首先,可以看出你还没有理解反射,
你现在写的代码只是做到了第一步,获取了这个方法,但是你别没有调用这个方法,所以它没报错
调用这个方法的是通过实体调用它的invoke()方法.
我给你发个我写的实例你研究研究
///下面是一个演示的实体类
package com.junimpl; public class UserInfo {
private String name="hao"; private String pwd; public String getName() { System.out.println("我是getName()方法"); return name; } public void setName(String name) { System.out.println("你设置的值是"+name ); this.name = name; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } } ///下面是反射调用它的实例
package com.test; import java.lang.reflect.Field; import java.lang.reflect.Method; public class Test {
public static void main(String args[]){ try { Class c = Class.forName("com.junimpl.UserInfo");//获取该实体的元类型 Object obj = c.newInstance();//创建这个实体的对象
Field field = c.getDeclaredField("name");//获取setName方法中参数的字段
//获取方法名为setName的方法,field.getType())获取它的参数数据类型 Method method = c.getDeclaredMethod("setName", field.getType());
//调用该方法,指定参数值为