【java】java反射获取属性和属性值,java反射设置属性和属性值
今日份代码如下:
/**
*
* @Author: SXD
* @Description:
* @Date: create in 2019/9/20 15:39
*/
public class ProSkuSearchRecordRedisData { private String recordId; private String skuSearchData; private Date exportDate; private String exportUrl; private String errorMsg; private Double score; private Integer status;//异步导出状态 【1 可导出】【0后台未处理】【-1后台处理失败】 public static ProSkuSearchRecordRedisData init(String recordId,String skuSearchData){
ProSkuSearchRecordRedisData redisData = new ProSkuSearchRecordRedisData();
redisData.setRecordId(recordId); //格式yyyyMMddXXXXXXXXXX
redisData.setSkuSearchData(skuSearchData);
redisData.setExportDate(new Date());
redisData.setScore(Double.parseDouble(recordId.substring(0, 8))); //权重为Double.parseDouble(yyyyMMdd))
redisData.setStatus(ProExprotRecordStatusEnum.STATUS_WAIT.getValue()); return redisData;
} /**
* 获取 对象的 属性名+属性值
* @param redisData
* @return
*/
public static Map<String,String> getReflexRecord(ProSkuSearchRecordRedisData redisData){
Map<String,String> map = new HashMap<>(); Class<? extends ProSkuSearchRecordRedisData> aClass = redisData.getClass();
Field[] declaredFields = aClass.getDeclaredFields();
for (Field declaredField : declaredFields) {
declaredField.setAccessible(true);
String fieldName = declaredField.getName();
Object fieldValue = null;
try {
fieldValue = declaredField.get(redisData);
if (fieldValue instanceof Date){
Date date = (Date)fieldValue;
fieldValue = getDateStr(date);
}
} catch (IllegalAccessException e) {
e.printStackTrace();
} map.put(fieldName,String.valueOf(fieldValue));
} return map;
} /**
* 时间转成字符串
* @param date
* @return
*/
private static String getDateStr(Date date){
LocalDateTime localDateTime = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
return localDateTime.format(format);
} /**
* 字符串转时间
* @param dateStr
* @return
*/
private static Date getDateByStr(String dateStr){
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime localDateTime = LocalDateTime.parse(dateStr, formatter);
ZoneId zone = ZoneId.systemDefault();
Instant instant = localDateTime.atZone(zone).toInstant();
return Date.from(instant);
} /**
* 设置 对象的 属性名+属性值
* @param map
* @return
*/
public static ProSkuSearchRecordRedisData setReflexRecord(Map<String,String> map){
ProSkuSearchRecordRedisData obj = new ProSkuSearchRecordRedisData();
Set<String> fieldSet = map.keySet();
Class<? extends ProSkuSearchRecordRedisData> aClass = obj.getClass();
for (String field : fieldSet) {
try {
Field declaredField = aClass.getDeclaredField(field);
declaredField.setAccessible(true);
Type genericType = declaredField.getGenericType();
if (genericType.getTypeName().contains("String")){
declaredField.set(obj,map.get(field));
}
if (genericType.getTypeName().contains("Double")){
declaredField.set(obj,Double.parseDouble(map.get(field)));
}
if (genericType.getTypeName().contains("Integer")){
declaredField.set(obj,Integer.parseInt(map.get(field)));
}
if (genericType.getTypeName().contains("Date")){
Date value = getDateByStr(map.get(field));
declaredField.set(obj,value);
}
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
return obj;
} public String getRecordId() {
return recordId;
} public void setRecordId(String recordId) {
this.recordId = recordId;
} public String getSkuSearchData() {
return skuSearchData;
} public void setSkuSearchData(String skuSearchData) {
this.skuSearchData = skuSearchData;
} public Date getExportDate() {
return exportDate;
} public void setExportDate(Date exportDate) {
this.exportDate = exportDate;
} public String getExportUrl() {
return exportUrl;
} public void setExportUrl(String exportUrl) {
this.exportUrl = exportUrl;
} public String getErrorMsg() {
return errorMsg;
} public void setErrorMsg(String errorMsg) {
this.errorMsg = errorMsg;
} public Double getScore() {
return score;
} public void setScore(Double score) {
this.score = score;
} public Integer getStatus() {
return status;
} public void setStatus(Integer status) {
this.status = status;
}
}
【java】java反射获取属性和属性值,java反射设置属性和属性值的更多相关文章
- Java反射学习-3 - 反射获取属性,方法,构造器
package cn.tx.reflect; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import ...
- Android(java)学习笔记109:通过反射获取成员变量和成员方法并且使用
一.反射获取成员变量并且使用: 1.获取字节码文件对象: Class c = Class.forName("cn.itcast_01.Person"); 2.使用无 ...
- Android(java)学习笔记50:通过反射获取成员变量和成员方法并且使用
1. 反射获取成员变量并且使用: (1)获取字节码文件对象: Class c = Class.forName("cn.itcast_01.Person"); (2) ...
- 原 .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)
大家都说反射耗性能,但是到底有多耗性能,哪些反射方法更耗性能:这些问题却没有统一的描述. 本文将用数据说明反射各个方法和替代方法的性能差异,并提供一些反射代码的编写建议.为了解决反射的性能问题,你可以 ...
- jQuery中使用attribute,prop获取,设置input的checked值【转】
1.prop方法获取.设置checked属性 当input控件checkbox设置了checked属性时,无论checked=”“或 checked=”checked”,$(obj).prop(“ch ...
- jQuery中使用attribute,prop获取,设置input的checked值
1.prop方法获取.设置checked属性 当input控件checkbox设置了checked属性时,无论checked=”“或 checked=”checked”,$(obj).prop(“ch ...
- java反射获取字段的属性值,以及为字段赋值等方法
1.获取某个类的属性值 /*利用getter方法获取值(首字母大写) CjJssetDTO obj: */ String filedName = "Cj"+(i+1); Class ...
- java通过反射获取Java对象属性值
说明: 作为反射工具类,通过对象和属性的名字获取对象属性的值,如果在当前对象属性没有找到,依次向上收集所有父类的属 性,直到找到属性值,没有找到返回null: 代码: 1.classUtil pack ...
- java利用反射获取类的属性及类型
java利用反射获取类的属性及类型. import java.lang.reflect.Field; import java.math.BigDecimal; import java.util.Map ...
随机推荐
- ANDROID培训准备资料之四大组件的简单介绍
Android四大组件是一个android app 最基本的组成部分,这篇博客主要给大家简单的介绍一下四种组件 (1)Activities (2)Services (3)BroadcastReceiv ...
- ftp上传文件时遇到: ftplib.error_perm: 553 Could not create file
问题描述 今天在使用python的ftplib模块上传文件时,碰到了这样的问题: ftplib.error_perm: 553 Could not create file. 原因 原因是FTP下对应的 ...
- chrony服务配置
chrony软件使用说明 chrony简介 chrony是一个开源的自由软件,它能保持系统时钟与时间服务器(ntp)同步,让时间保持精确. 它由两个程序组成:chrongd和chronyc. chro ...
- 007-OpenStack-启动实例
OpenStack-启动实例 [基于此文章的环境]点我快速打开文章 1.控制节点操作(controller) [官方文档]点我快速打开文章 1. 创建网络 neutron net-create --s ...
- MNIST数据集上卷积神经网络的简单实现(使用PyTorch)
设计的CNN模型包括一个输入层,输入的是MNIST数据集中28*28*1的灰度图 两个卷积层, 第一层卷积层使用6个3*3的kernel进行filter,步长为1,填充1.这样得到的尺寸是(28+1* ...
- Spring Boot Quartz 动态配置,持久化
Quartz 是一个很强大的任务调度框架在SpringBoot中也很容易集成 添加依赖: <dependency> <groupId>org.springframework&l ...
- http的get请求与post请求区别
原文 http://www.w3school.com.cn/tags/html_ref_httpmethods.asp GET 方法 请注意,查询字符串(名称/值对)是在 GET 请求的 URL 中发 ...
- 微信小程序单向数据流解决
1. 小程序中没有vue中v-model一样的双向数据机制,并且小程序也不像vue那样的进行 实时的数据驱动视图. 小程序页面数据加载完成后再去改变data中的数据页面是 不会有变化的. 2. 解决: ...
- 用NABCD法提出靠谱的项目建议
在项目中提出靠谱的建议,一方面能提高项目成功的概率,另一方面锻炼自己能力提升自己在项目中的影响力,所以我们要尽可能抓住机会在项目中提建议.那要如何提出靠谱的建议呢?从需求出发,明确做法和好处,分析竞争 ...
- 怎样删掉vc++ 对话框中的蓝色虚线框
选择"格式"--"切换辅助线"或者是快捷键alt+o , g