「java反射修改属性值」java反射设置属性值

博主:adminadmin 2023-01-14 23:24:10 951

今天给各位分享java反射修改属性值的知识,其中也会对java反射设置属性值进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

java能在运行期间通过反射去改变方法的返回值么

不能,反射是可以拿到对象的属性,方案,类等信息,如一个Persion类,有name属性,也有相应的get/set方法,你可以通过反射去修改这个name的的值,但你不能在运行getName方法时去改变它的返回值,必须利用代理,在方法外面做拦截。 利用AOP,在返回前改变值即可,Aop的核心也就是动态代理。

如何通过java的反射 修改对象的属性的值

假设obj是对象的实例、有属性叫name

Field field=obj.getClass().getDeclaredField("name");

field.set(obj, "张三");

Java反射 在只知道类名的情况下,怎样给其中的私有属性赋值

利用反射能

//假设类名为A

// 实例化类

A  p = new A();

// 获取class

Class c = p.getClass();

// 获取该类所有的字段

Field[] fields = c.getDeclaredFields();

// 遍历赋值

for (int i = 0; i  fields.length; i++) {

String filedName = fields[i].getName();

// AccessibleTest类中的成员变量为private,故必须进行此操作

fields[i].setAccessible(true);

// 判断类型

Class? type=fields[i].getType();

//获取字段类型

String typeName=type.getName();

System.out.println(type.getName());

// 对字段进行赋值 第一个参数为对象引用第二个参数为要附的值

//如果为字符串类型

if("java.lang.String".equals(typeName)){

fields[i].set(p, "1");

}

//如果为日期类型

else if("java.util.Date".equals(typeName)){

fields[i].set(p, new Date());

}

else{

fields[i].set(p, 1);

}

}

//楼主我只是简单的写了下。可能还需要判断字段名称以及其他类型什么的。

最后希望楼主多看看java 文档。

关于java反射修改属性值和java反射设置属性值的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。