今日份代码如下:

  1. /**
  2. *
  3. * @Author: SXD
  4. * @Description:
  5. * @Date: create in 2019/9/20 15:39
  6. */
  7. public class ProSkuSearchRecordRedisData {
  8.  
  9. private String recordId;
  10.  
  11. private String skuSearchData;
  12.  
  13. private Date exportDate;
  14.  
  15. private String exportUrl;
  16.  
  17. private String errorMsg;
  18.  
  19. private Double score;
  20.  
  21. private Integer status;//异步导出状态 【1 可导出】【0后台未处理】【-1后台处理失败】
  22.  
  23. public static ProSkuSearchRecordRedisData init(String recordId,String skuSearchData){
  24. ProSkuSearchRecordRedisData redisData = new ProSkuSearchRecordRedisData();
  25. redisData.setRecordId(recordId); //格式yyyyMMddXXXXXXXXXX
  26. redisData.setSkuSearchData(skuSearchData);
  27. redisData.setExportDate(new Date());
  28. redisData.setScore(Double.parseDouble(recordId.substring(0, 8))); //权重为Double.parseDouble(yyyyMMdd))
  29. redisData.setStatus(ProExprotRecordStatusEnum.STATUS_WAIT.getValue());
  30.  
  31. return redisData;
  32. }
  33.  
  34. /**
  35. * 获取 对象的 属性名+属性值
  36. * @param redisData
  37. * @return
  38. */
  39. public static Map<String,String> getReflexRecord(ProSkuSearchRecordRedisData redisData){
  40. Map<String,String> map = new HashMap<>();
  41.  
  42. Class<? extends ProSkuSearchRecordRedisData> aClass = redisData.getClass();
  43. Field[] declaredFields = aClass.getDeclaredFields();
  44. for (Field declaredField : declaredFields) {
  45. declaredField.setAccessible(true);
  46. String fieldName = declaredField.getName();
  47. Object fieldValue = null;
  48. try {
  49. fieldValue = declaredField.get(redisData);
  50. if (fieldValue instanceof Date){
  51. Date date = (Date)fieldValue;
  52. fieldValue = getDateStr(date);
  53. }
  54. } catch (IllegalAccessException e) {
  55. e.printStackTrace();
  56. }
  57.  
  58. map.put(fieldName,String.valueOf(fieldValue));
  59. }
  60.  
  61. return map;
  62. }
  63.  
  64. /**
  65. * 时间转成字符串
  66. * @param date
  67. * @return
  68. */
  69. private static String getDateStr(Date date){
  70. LocalDateTime localDateTime = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
  71. DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
  72. return localDateTime.format(format);
  73. }
  74.  
  75. /**
  76. * 字符串转时间
  77. * @param dateStr
  78. * @return
  79. */
  80. private static Date getDateByStr(String dateStr){
  81. DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
  82. LocalDateTime localDateTime = LocalDateTime.parse(dateStr, formatter);
  83. ZoneId zone = ZoneId.systemDefault();
  84. Instant instant = localDateTime.atZone(zone).toInstant();
  85. return Date.from(instant);
  86. }
  87.  
  88. /**
  89. * 设置 对象的 属性名+属性值
  90. * @param map
  91. * @return
  92. */
  93. public static ProSkuSearchRecordRedisData setReflexRecord(Map<String,String> map){
  94. ProSkuSearchRecordRedisData obj = new ProSkuSearchRecordRedisData();
  95. Set<String> fieldSet = map.keySet();
  96. Class<? extends ProSkuSearchRecordRedisData> aClass = obj.getClass();
  97. for (String field : fieldSet) {
  98. try {
  99. Field declaredField = aClass.getDeclaredField(field);
  100. declaredField.setAccessible(true);
  101. Type genericType = declaredField.getGenericType();
  102. if (genericType.getTypeName().contains("String")){
  103. declaredField.set(obj,map.get(field));
  104. }
  105. if (genericType.getTypeName().contains("Double")){
  106. declaredField.set(obj,Double.parseDouble(map.get(field)));
  107. }
  108. if (genericType.getTypeName().contains("Integer")){
  109. declaredField.set(obj,Integer.parseInt(map.get(field)));
  110. }
  111. if (genericType.getTypeName().contains("Date")){
  112. Date value = getDateByStr(map.get(field));
  113. declaredField.set(obj,value);
  114. }
  115. } catch (NoSuchFieldException e) {
  116. e.printStackTrace();
  117. } catch (IllegalAccessException e) {
  118. e.printStackTrace();
  119. }
  120. }
  121. return obj;
  122. }
  123.  
  124. public String getRecordId() {
  125. return recordId;
  126. }
  127.  
  128. public void setRecordId(String recordId) {
  129. this.recordId = recordId;
  130. }
  131.  
  132. public String getSkuSearchData() {
  133. return skuSearchData;
  134. }
  135.  
  136. public void setSkuSearchData(String skuSearchData) {
  137. this.skuSearchData = skuSearchData;
  138. }
  139.  
  140. public Date getExportDate() {
  141. return exportDate;
  142. }
  143.  
  144. public void setExportDate(Date exportDate) {
  145. this.exportDate = exportDate;
  146. }
  147.  
  148. public String getExportUrl() {
  149. return exportUrl;
  150. }
  151.  
  152. public void setExportUrl(String exportUrl) {
  153. this.exportUrl = exportUrl;
  154. }
  155.  
  156. public String getErrorMsg() {
  157. return errorMsg;
  158. }
  159.  
  160. public void setErrorMsg(String errorMsg) {
  161. this.errorMsg = errorMsg;
  162. }
  163.  
  164. public Double getScore() {
  165. return score;
  166. }
  167.  
  168. public void setScore(Double score) {
  169. this.score = score;
  170. }
  171.  
  172. public Integer getStatus() {
  173. return status;
  174. }
  175.  
  176. public void setStatus(Integer status) {
  177. this.status = status;
  178. }
  179. }

【java】java反射获取属性和属性值,java反射设置属性和属性值的更多相关文章

  1. Java反射学习-3 - 反射获取属性,方法,构造器

    package cn.tx.reflect; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import ...

  2. Android(java)学习笔记109:通过反射获取成员变量和成员方法并且使用

    一.反射获取成员变量并且使用: 1.获取字节码文件对象:         Class c = Class.forName("cn.itcast_01.Person"); 2.使用无 ...

  3. Android(java)学习笔记50:通过反射获取成员变量和成员方法并且使用

    1. 反射获取成员变量并且使用: (1)获取字节码文件对象:         Class c = Class.forName("cn.itcast_01.Person"); (2) ...

  4. 原 .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)

    大家都说反射耗性能,但是到底有多耗性能,哪些反射方法更耗性能:这些问题却没有统一的描述. 本文将用数据说明反射各个方法和替代方法的性能差异,并提供一些反射代码的编写建议.为了解决反射的性能问题,你可以 ...

  5. jQuery中使用attribute,prop获取,设置input的checked值【转】

    1.prop方法获取.设置checked属性 当input控件checkbox设置了checked属性时,无论checked=”“或 checked=”checked”,$(obj).prop(“ch ...

  6. jQuery中使用attribute,prop获取,设置input的checked值

    1.prop方法获取.设置checked属性 当input控件checkbox设置了checked属性时,无论checked=”“或 checked=”checked”,$(obj).prop(“ch ...

  7. java反射获取字段的属性值,以及为字段赋值等方法

    1.获取某个类的属性值 /*利用getter方法获取值(首字母大写) CjJssetDTO obj: */ String filedName = "Cj"+(i+1); Class ...

  8. java通过反射获取Java对象属性值

    说明: 作为反射工具类,通过对象和属性的名字获取对象属性的值,如果在当前对象属性没有找到,依次向上收集所有父类的属 性,直到找到属性值,没有找到返回null: 代码: 1.classUtil pack ...

  9. java利用反射获取类的属性及类型

    java利用反射获取类的属性及类型. import java.lang.reflect.Field; import java.math.BigDecimal; import java.util.Map ...

随机推荐

  1. 个人项目wc(Java)

                                                      个人项目(Java) 一丶Github地址:https://github.com/SAH2019/S ...

  2. day 34 作业

    作业 mysql> create table tea( -> id int unsigned auto_increment primary key, -> name varchar( ...

  3. [Go] golang的用途和windows搭建环境

    Golang核心编程: 区块链研发工程师(分布式账本技术,互联网数据库技术,特点是去中心化) Go服务器端/游戏软件工程师(现在主流是C C++,处理日志,数据打包,文件处理,美团后台流量支撑,处理大 ...

  4. Java后端面经总结:拿下蚂蚁金服美团头条 offer 秘诀

    笔者在面过 猿辅导,去哪儿,旷视, 陌陌,头条, 阿里, 快手, 美团, 腾讯之后,除了收获一大堆面试问题,还思考到如何成为面试官眼中的”爱技术,爱思考,靠谱,有潜力候选人的”一些”套路”. 面试问题 ...

  5. OpenGL入门(一):使用GLFW创建简单的窗口

    如果使用QT,那么创建一个OpenGL渲染窗口其实很容易,不过出于初学的角度,使用GLFW库来创建新窗口. 1. 下载并配置GLFW GLFW是一个专门针对OpenGL的C语言库,它提供了一些渲染物体 ...

  6. JS高阶---回调函数

    1.什么函数是回调函数? 此时两者的执行并没有先后顺序 两个都是回调函数 满足三个特点就是回调 .定义了函数 .没有主动调用 .最后执行了 2.常见的回调函数有哪些? .DOM事件回调函数 .定时器回 ...

  7. MySQL中建立Oracle中SCOTT数据示例

    1.创建 scott 数据库 CREATE DATABASE scott; 2.创建 scott 数据库中的 dept 表 CREATE TABLE dept( deptno INT UNSIGNED ...

  8. c# 第11节 运算符大全

    本节内容: 1:数学运算符 2:赋值运算符 3:关系运算符 4:布尔运算符 5:位运算符 6:其他运算符 1:数学运算符 2:赋值运算符 3:关系运算符 4:布尔运算符 5:位运算符 & 运算 ...

  9. centos7 下安装rpm的mysql 5.7

    在centos7下安装mysql5.7 一:下载mysql 去官网上去下载:这里我下载的二进制格式的 https://dev.mysql.com/downloads/mysql/ 去下载对应平台的my ...

  10. LG5338/BZOJ5509/LOJ3105 「TJOI2019」甲苯先生的滚榜 Treap

    问题描述 LG5338 LOJ3105 BZOJ5509 题解 建立一棵\(\mathrm{Treap}\),把原来的\(val\)换成两个值\(ac,tim\) 原来的比较\(val_a<va ...