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

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

利用反射能

//假设类名为A

// 实例化类

A  p = new A();

// 获取class

Class c = pgetClass();

// 获取该类所有的字段

Field[] fields = cgetDeclaredFields();

// 遍历赋值

for (int i = 0; i < fieldslength; i++) {

String filedName = fields[i]getName();

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

fields[i]setAccessible(true);

// 判断类型

Class<> type=fields[i]getType();

//获取字段类型

String typeName=typegetName();

Systemoutprintln(typegetName());

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

//如果为字符串类型

if("javalangString"equals(typeName)){

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

}

//如果为日期类型

else if("javautilDate"equals(typeName)){

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

}

else{

fields[i]set(p, 1);

}

}

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

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

5我想封装对jdbc的 *** 作,现遇到一个问题,比如说我数据库里有一个字段price是number型的,但我实体类里是String的,我在做反射的时候就有问题,代码结构如下:Object o �0�2//是需要组装的对象Field field //是o对象中的一个属性String methodName //方法名Object value //是从数据库中得到的值,Method method = ogetClass()getMethod(methodName,fieldgetType());methodinvoke(o, value);因为field的类型和value的类型不一至,所以methodinvoke(o, value);时报错。我试过用classcast()来转型,但这样是不行的。请各位朋友帮你看看这个问题,谢谢了!问题补充:这个问题我自己已经解决了,做了一下类型转换,先只写了一个String,其他类型的同理 Object type=fieldgetType()newInstance();

以上就是关于Java反射 在只知道类名的情况下,怎样给其中的私有属性赋值全部的内容,包括:Java反射 在只知道类名的情况下,怎样给其中的私有属性赋值、数据库字段类型与实体类类型不一致怎么做反射、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/10060488.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存