【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 ...
随机推荐
- Ubuntu19.04安装常用软件
安装Indicator Stickynotes 桌面便签小工具sudo add-apt-repository ppa:umang/indicator-stickynotessudo apt-get u ...
- 5.如何基于 dubbo 进行服务治理、服务降级、失败重试以及超时重试?
作者:中华石杉 面试题 如何基于 dubbo 进行服务治理.服务降级.失败重试以及超时重试? 面试官心理分析 服务治理,这个问题如果问你,其实就是看看你有没有服务治理的思想,因为这个是做过复杂微服务的 ...
- yum 安装apache php mysql
安装: yum install -y httpd php 查看版本:. rpm -qa httpd php httpd-2.2.15-54.el6.centos.x86_64 php-5.3.3-48 ...
- 在springboot或者ssm框架或者类似的框架中VO、DTO、DO、PO的概念、区别和用处
该文章主要讨论我们开发过程当中会经常用到的对象:VO.DTO.DO.PO;由于项目和每个人的命名习惯,这里只是对这些概念进行阐述.概念: VO(View Object):视图对象,用于展示层,它的作用 ...
- 201871010112-梁丽珍《面向对象程序设计(java)》第十四周学习总结
项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...
- eth0: ERROR while getting interface flags: No such device的解决方法、Linux怎么修改IP以及ping不通的处理方法
首先输入ifconfig命令查看当前的ip信息 发现没有eth0这个网卡设备,有ens33 接着输入命令:ifconfig ens33 192.168.2.110 -- 修改临时ip地址,系统 ...
- c++中#ifndef ... 与#pragma once的区别
原文链接:https://www.cnblogs.com/qiang-upc/p/11407364.html (1)C/C++防止头文件被include多次的方法:#ifnde.. 及 #prag ...
- Arduino SPI驱动7引脚0.96寸OLED SSD1306 调试笔记
https://www.geek-workshop.com/thread-37818-1-1.html 2.下载最新库https://learn.adafruit.com/monoc ... ibra ...
- 一些开源cdc框架以及工具
以下是一些cdc工具,没有包含商业软件的 zendesk maxwell 参考地址 https://github.com/zendesk/maxwell 功能 mysql 2 json 的kafaa ...
- <String> 49 87
49. Group Anagrams class Solution { public List<List<String>> groupAnagrams(String[] str ...