4个回答
展开全部
利用反射能
//假设类名为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 文档。
展开全部
/**
* Field的反射与对私有变量的暴力反射。
* 当通过一个实例对象拿到相应的字段对象时,他代表的是所有该类型的字段,不是一个具体实例的该字段,因为
* 他境界提高了
*/
ReflectPoint pt1=new ReflectPoint(5,4);
//对于普通公共成员的反射
Field fieldy=pt1.getClass().getField("y");
System.out.println(fieldy.get(pt1));
//对于私有成员的暴力反射,暴力反射要解决的两个问题,1获得看不见的成员,2 看见了还要设置这个成员是可以被访问的。
Field fieldx=pt1.getClass().getDeclaredField("x");
fieldx.setAccessible(true);
System.out.println(fieldx.get(pt1));
changeStringValue(pt1);
System.out.println(pt1);
* Field的反射与对私有变量的暴力反射。
* 当通过一个实例对象拿到相应的字段对象时,他代表的是所有该类型的字段,不是一个具体实例的该字段,因为
* 他境界提高了
*/
ReflectPoint pt1=new ReflectPoint(5,4);
//对于普通公共成员的反射
Field fieldy=pt1.getClass().getField("y");
System.out.println(fieldy.get(pt1));
//对于私有成员的暴力反射,暴力反射要解决的两个问题,1获得看不见的成员,2 看见了还要设置这个成员是可以被访问的。
Field fieldx=pt1.getClass().getDeclaredField("x");
fieldx.setAccessible(true);
System.out.println(fieldx.get(pt1));
changeStringValue(pt1);
System.out.println(pt1);
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
给私有属性赋值,就调用它的setter方法啊!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
泛型,反射赋值
具体说一下你的情况,贴出的你代码。
具体说一下你的情况,贴出的你代码。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询