永发信息网

java反射调用set方法

答案:3  悬赏:20  手机版
解决时间 2021-04-28 05:34
  • 提问者网友:咪咪
  • 2021-04-27 21:24

我用java反射调用set方法

m = c.getDeclaredMethod("setGName", new Class[] { String.class });要报错

我在用这个方式,也要报错,

m = c.getDeclaredMethod("setGName", String.class );

为什么啊,

报错一点提示都没,

就是报com.jb.xd.users.setGName

最佳答案
  • 五星知识达人网友:一把行者刀
  • 2021-04-27 23:01

你的users是不是没有无参构造?只有带参构造?

全部回答
  • 1楼网友:荒野風
  • 2021-04-28 00:01

首先,可以看出你还没有理解反射,

你现在写的代码只是做到了第一步,获取了这个方法,但是你别没有调用这个方法,所以它没报错

调用这个方法的是通过实体调用它的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());

//调用该方法,指定参数值为

  • 2楼网友:冷風如刀
  • 2021-04-27 23:48
这样不知道符合不符合楼主的本意,但是执行应该不会报错Method m = c.getDeclaredMethod("setGName", Class.forName("java.lang.String"));
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯