java反射

vvhlj 2010-09-06 09:15:03
Class c = Account.class;

Account account = new Account();

//获取Account实体类中,所有声明的属性
Field[] fields = c.getDeclaredFields();

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

//在迭代时,我怎样才能知道fileds[i]的类型呢
fields[i].set(account,"放入一个Object类型的值");
}
...全文
46 点赞 收藏 5
写回复
5 条回复
若鱼1919 2010年09月06日


import java.lang.reflect.Field;
class Account{
private int id;
private String name;
public String toString(){
return name+","+id;
}
}
public class ReflectTest {
public static void main(String[] args)throws Exception {
Account account = new Account();
Class cls = Account.class;
Field[] fields = cls.getDeclaredFields();
for(Field field : fields){
field.setAccessible(true);
Class fieldType = field.getType();
if(fieldType == int.class){
field.set(account, 1);
}else if(fieldType == String.class){
field.set(account, "aaaaaa");
}
}
System.out.println(account);
}
}
回复 点赞
humanity 2010年09月06日
private / protected / default 类型的 field 可能不允许访问,

需要 fields[i].setAccessible(true) 然后再 fields[i].set(xxxx, "FEFWEFWEF");
回复 点赞
vvhlj 2010年09月06日
能不能详细点,完成对这个属性的赋值
fields[i].set(account,obj);
回复 点赞
oklinsong 2010年09月06日
getType()
回复 点赞
zhaohuihua 2010年09月06日
fields[i].getType();
回复 点赞
发动态
发帖子
Java SE
创建于2007-09-28

3.4w+

社区成员

30.7w+

社区内容

Java 2 Standard Edition
社区公告
暂无公告