【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 ...
随机推荐
- FFT之频率与幅值的确定(转)
FFT之后得到的是什么数 FFT之后得到的那一串复数是波形对应频率下的幅度特征,注意这个是幅度特征不是复制,下面要讲两个问题:1.如何获取频率,2.如何获取幅值 获取频率 FFT变换如何获取频率?傅里 ...
- Visual Studio Code 远程开发探秘
摘要: IDE新时代! 作者:SHUHARI 的博客 原文:Visual Studio Code 远程开发探秘 Fundebug按照原文要求转载,版权归原作者所有. 在以前的文章 有趣的项目 - 在浏 ...
- Django框架(十六)-- 中间件、CSRF跨站请求伪造
一.什么是中间件 中间件是介于request与response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出 二.中间件的作用 如果你想修改请求,例如被传送到view ...
- mysql的floor()报错注入方法详细分析
刚开始学习sql注入,遇见了 select count(*) from table group by floor(rand(0)*2); 这么条语句.在此做个总结. (更好的阅读体验可访问 这里 ) ...
- MySQL中建立Oracle中SCOTT数据示例
1.创建 scott 数据库 CREATE DATABASE scott; 2.创建 scott 数据库中的 dept 表 CREATE TABLE dept( deptno INT UNSIGNED ...
- 201871010124-王生涛《面向对象程序设计(java)》第十四周学习总结
项目 内容 这个作业属于哪个课程 <任课教师博客主页链接>https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 <作业链接地址>http ...
- robotframework + appium实例
Open Application http://localhost:4723/wd/hub platformName=Android platformVersion=4.4.2 deviceName= ...
- uiautomator 调试例子
package com.bing.cn; import com.android.uiautomator.testrunner.UiAutomatorTestCase; public class Dem ...
- vue.js最最最基础的入门案例
打算自己写一点vue.js从入门到进阶的笔记,方便一些新手从头开始开发的时候,可以参考一下. 写的或许是很简单的文章,提供给新手参考.暂时都是一些入门级别的. 以后会慢慢的加深,进阶,写出一些更好,更 ...
- Vue项目零碎知识(全局js,css配置,element-UI,bs使用, img动态配置,js数组)
全局css样式,首先在静态assets中写好文件,然后要在main.js中配置 // 配置全局css样式 // import '@/assets/css/global.css' require('@/ ...