java 在无法创建对象的情况下如何利用反射为对象赋值? 5C

我的教程里少一个工具类的方法:
public void setField(Object 对象,String 方法名,Object 参数){
//传入一个对象,方法名,形参 通过反射为对象属性赋值
}
我写的时候发现无法实例化Object就无法为属性赋值。
请帮助我完成此方法或提供功能相同的工具类,Thanks♪(・ω・)ノ

5个回答

Class clazz = Class.forName("com.fanshe.Person");

Class<?> clazz=Class.forName(className);
Object bean = clazz.newInstance();
Field field = clazz.getDeclaredField("msg");
field.setAccessible(true);
field.set(bean, "hello world");

wangjin9805
wangjin9805 还是没懂你要做啥
2 年多之前 回复
wangjin9805
wangjin9805 List<Object> list = new ArrayList<>(); list.add(new String("123A")); list.add(new Integer(12)); list.add(new CourseInfo()); for(Object obj :list){ System.out.println(obj.getClass()); }
2 年多之前 回复
qq_39310773
qq_39310773 回复wangjin9805: 这不行吧,因为obj可能是任何Javabean
2 年多之前 回复
wangjin9805
wangjin9805 不太懂 是问if( obj instanceof UserInfo ) 这样判断去取吗
2 年多之前 回复
Jack102423
Jack102423 同问
2 年多之前 回复
qq_39310773
qq_39310773 如果对象放在Object里,怎么获取className?
2 年多之前 回复

public class MapTest {

private String name;

public static void main(String[] args) throws InterruptedException, NoSuchFieldException, SecurityException,
        IllegalArgumentException, IllegalAccessException {

    MapTest m = new MapTest();
    m.setName("123");
    setField(m, "name", "321");
    System.out.println(m.getName());
}

public static void setField(Object o, String methodName, Object para)
        throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException {
    Class<?> clazz = o.getClass();
    Field field = clazz.getDeclaredField(methodName);
    field.setAccessible(true);
    field.set(o, para);

}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

}


输出结果 321

三种形式来着我记得,forname是一种,这个书上都有,好好看书

我的User继承它, 但是我怎么利用反射得到User的实例对象 Object o = base....
最佳答案在开发Web应用程序时,经常需要将Post的表单的内容传递给JavaBean。虽然一些... 我们可以利用反射实现表单的字段自动赋给JavaBean的相应setXxx方法。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐