【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反射设置属性和属性值 的全部内容, 来源链接: utcz.com/z/392155.html