Java反射得到属性的值和设置属性的值

  •           通过反射获取实体类的所有属性和值

 以实体类fileEntity为例 
@SelectBeforeUpdate(value = true)
@DynamicInsert(value = true)
@DynamicUpdate(value = true)
@javax.persistence.Entity
@javax.persistence.Table(name = "T_HSDA_FILE_ENTITY")
@AccessType("field")
public class HsdaFileEntity implements Serializable{
	/**
	 * 
	 */
	private static final long serialVersionUID = -8514137655083637896L;

	public HsdaFileEntity(){

	}
	/**
	 *主键id
	 */
	@Id
	@GeneratedValue(generator = "system-uuid")
	@GenericGenerator(name = "system-uuid", strategy = "uuid")
	private String objectid;
	/**
	 *案卷id
	 */
	@Column(name = "VOLUME_ID", length = 32)
	private String volumeId;
	/**
	 *案卷号
	 */
	@Column(name = "VOLUME_NUM", length = 50)
	private String volumeNum;
	/**
	 *全宗号
	 */
	@Column(name = "GROUP_RECORD_NUM", length = 50)
	private String groupRecordNum;
	/**
	 *密级
	 */
	@Column(name = "SEC_LEVEL", length = 50)
	private String secLevel;
	/**
	 *归档年度
	 */
	@Column(name = "ARCHIVE_YEAR", length = 50)
	private String archiveYear;
	/**
	 *保管期限
	 */
	@Column(name = "STORE_PERIOD", length = 50)
	private String storePeriod;
	/**
	 *保管期限-名称
	 */
	@Code2MC(dmFieldMc = "storePeriod", lxjp = "BGQX")
	@Transient
	private String storePeriod__;
	/**
	 *是否归档
	 */
	@Column(name = "IS_ARCHIVED", length = 1)
	private String isArchived;
	/**
	 *档号
	 */
	@Column(name = "FILE_NUM", length = 200)
	private String fileNum;
	/**
	 *门类ID
	 */
	@Column(name = "category_id", length = 32)
	private String categoryId;
	/**
   //省略setter....
	/*
	 * 实列化类 方法2
	 */

	HsdaFileEntity bean = new HsdaFileEntity();bean.set..... // 得到类对象
	Class fileEntityClass = (Class) bean.getClass();
	/* * 得到类中的所有属性集合 */
        Field[] fs = fileEntityClass.getDeclaredFields();for(
	int i = 0;i<fs.length;i++)
	{
		Field f = fs[i];
		f.setAccessible(true); // 设置些属性是可以访问的
		Object val = f.get(bean);// 得到此属性的值
		System.out.println("name:" + f.getName() + "\t value = " + val);
		String type = f.getType().toString();// 得到此属性的类型
		if (type.endsWith("String")) {
			System.out.println(f.getType() + "\t是String");
			f.set(bean, "12"); // 给属性设值
		} else if (type.endsWith("int") || type.endsWith("Integer")) {
			System.out.println(f.getType() + "\t是int");
			f.set(bean, 12); // 给属性设值
		} else {
			System.out.println(f.getType() + "\t");
		}
	}
	/* * 得到类中的方法 */
	Method[] methods = fileEntityClass.getMethods();

	for(
	int i = 0;i<methods.length;i++)
	{
		Method method = methods[i];
		if (method.getName().startsWith("get")) {
			System.out.print("methodName:" + method.getName() + "\t");
			System.out.println("value:" + method.invoke(bean));// 得到get 方法的值
		}
	}
}



  • 通过反射获取实体类的特定某一个属性和值

// 查询机构或问题对应的值 我们这是表单设计器设计出来的字段不固定,所以通过另一张表关联起来
HsdaDescItemConfig descItemConfig = descItemConfigDao.getHsdaItemByCon2(levelId, "机构或问题");
// 获取hsdaFileEntity反射
Class fileEntityClass = hsdaFileEntity.getClass();
// 获取类对应的字段
Field field = fileEntityClass.getDeclaredField(descItemConfig.getFieldName());
field.setAccessible(true);
// 获取对应字段的值
String value = field.get(hsdaFileEntity).toString();




                
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值