Java 反射获取对象里的值
最近在负责邮件服务,里面会涉及到很多Email模板,这里我使用到了java的模板引擎:jetbrick-template,需要使用Map集合一个个往里面设置值,然后调用模板方法,进行替换。实体类一个个往Map中设置值,感觉非常麻烦,工作效率极低,此时想到了使用Java中的反射获得实体类中的值,工具类如下
java 模板引擎点我直达
工具类
package com.ybchen.springbootohmyemail.convert; import com.sun.tools.javac.code.Attribute;
import com.ybchen.springbootohmyemail.entity.EmailData; import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map; /**
* @ClassName:ReplaceEmailTemplate
* @Description:邮件模板转换工具
* @Author:chenyb
* @Date:2020/11/30 6:52 下午
* @Versiion:1.0
*/
public class ReplaceEmailTemplate {
/**
* 实体类转Map
* @param clazz 类
* @param obj 实体类
* @param <T> 实体类
* @return
*/
public static<T> Map<String,Object> replaceContext(Class<?> clazz,T obj) {
Map<String,Object> map=new HashMap<String,Object>();
Field[] declaredFields = clazz.getDeclaredFields();
for(Field f:declaredFields){
try {
//打开可见性,要不然获取不到值
f.setAccessible(true);
map.put(f.getName(),f.get(obj));
} catch (IllegalAccessException e) {
e.printStackTrace();
}finally {
//关闭可见性
f.setAccessible(false);
}
}
return map;
}
}
调用
EmailData emailData = new EmailData("ybchen", "199999999", "www.baidu.com");
Map<String, Object> map = ReplaceEmailTemplate.replaceContext(EmailData.class,emailData);
package com.ybchen.springbootohmyemail.entity; import java.io.Serializable; /**
* @ClassName:EmailData
* @Description:TODO
* @Author:chenyb
* @Date:2020/11/30 6:56 下午
* @Versiion:1.0
*/
public class EmailData implements Serializable {
private String username;
private String email;
private String url; public EmailData() {
} public EmailData(String username, String email, String url) {
this.username = username;
this.email = email;
this.url = url;
} public String getUsername() {
return username;
} public void setUsername(String username) {
this.username = username;
} public String getEmail() {
return email;
} public void setEmail(String email) {
this.email = email;
} public String getUrl() {
return url;
} public void setUrl(String url) {
this.url = url;
} @Override
public String toString() {
return "EmailData{" +
"username='" + username + '\'' +
", email='" + email + '\'' +
", url='" + url + '\'' +
'}';
}
}
Java 反射获取对象里的值的更多相关文章
- Java反射获取对象成员属性,getFields()与getDeclaredFields()方法的区别
Java反射获取对象成员属性,getFields()与getDeclaredFields()方法的区别 在工作中遇到一个问题,就是你需要去判断某个字符串是不是对象的某个成员属性名,然后根据判断结果 ...
- Java反射获取对象VO的属性值(通过Getter方法)
有时候,需要动态获取对象的属性值. 比如,给你一个List,要你遍历这个List的对象的属性,而这个List里的对象并不固定.比如,这次User,下次可能是Company. e.g. 这次我需要做一个 ...
- 【java】java反射获取属性和属性值,java反射设置属性和属性值
今日份代码如下: /** * * @Author: SXD * @Description: * @Date: create in 2019/9/20 15:39 */ public class Pro ...
- java反射获取字段的属性值,以及为字段赋值等方法
1.获取某个类的属性值 /*利用getter方法获取值(首字母大写) CjJssetDTO obj: */ String filedName = "Cj"+(i+1); Class ...
- java 反射 - 获取成员变量的值.
通过反射,可以获取所有声明的成员变量(包括所有的),代码如下: package spt.test.src; public class Person { private String name = &q ...
- 第五课 JAVA反射获取对象属性和方法(通过配置文件)
Service1.java package reflection; public class Service1 { public void doService1(){ System.out.print ...
- 第五课 JAVA反射获取对象属性和方法
package com.hero; import java.lang.reflect.Field; public class TestReflction5 { public static void m ...
- 利用反射获取对象中的值等于x的字段
Field[] field = behavior.getClass().getDeclaredFields(); for (int i = 0; i < field.length; i++) { ...
- Java反射获取class对象的三种方式,反射创建对象的两种方式
Java反射获取class对象的三种方式,反射创建对象的两种方式 1.获取Class对象 在 Java API 中,提供了获取 Class 类对象的三种方法: 第一种,使用 Class.forName ...
- jquery attr()方法 添加,修改,获取对象的属性值。
jquery attr()方法 添加,修改,获取对象的属性值. jquery中用attr()方法来获取和设置元素属性,attr是attribute(属性)的缩写,在jQuery DOM操作中会经常用到 ...
随机推荐
- Javascript返回顶部和砸金蛋,跑马灯等游戏代码实现
1. 我们经常写页面的时候会遇到页面很长需要做返回顶部的操作:$("id /class").animate({scrollTop:$('.class').offset().top} ...
- FileInputStream和FileOutputStream
FileInputstream 字节输入流 用于文件内容的读取操作. 创建FileInputstream对象用于读取文件内容,使用后需要进行关闭操作 常用方法: read(); //每次仅读取一个字节 ...
- css :not()选择器使用
前言:这是一个vue的项目,引入了一个reset.css,重写了几乎所有标签的默认样式.项目中需要渲染富文本,里面包含了很多标签,例如:<h1>这是一个大标题</h1>,这个时 ...
- jeecg-boot中导出excel冲突问题
jeecg-boot自带的库是autopoi,如果自定义导出excel引入poi,则需要POI版本要保持一致,否则会出现冲突的情况,导致这2个都用不了的情况. Autopoi底层用的是POI库,poi ...
- Unity Linear Gamma色彩空间矫正测试
Gamma和Linear修正的问题相信网上已经有很多文章了.简单来说显示器的颜色输出不是线性的,根据硬件参数和输出颜色 信息拟合曲线是x^2.2,因此会使用一个x^0.45曲线将其拟合回线性. 因为0 ...
- Redis 的安装与配置详解【Redis系列一】
〇.前言 关于 Redis 在日常开发中还是用的比较多的,特别是在秒杀.消息队列.排行榜等数据交互时效要求较高的场景,Redis 都可以轻松应对. 本文将针对 Redis 进行简单介绍,以及如何安装, ...
- 什么是Java线程池
摘自:某个百度知道 多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力. 假设一个服务器完成一项任务所需时间为:T1 创建线程时间,T2 在 ...
- C# 记一次对chm帮助文档的信息提取
事情时这样,有用友u8的字典数据的帮助文档一份,同事需要把里面的很多张表的字典信息给提取出来,然后构成sql语句,插入数据库.字典就是一张对表里的字段的一个说明,长这样 同事一开始是手动复制到exce ...
- 批量处理图片(resize;grayscale)以及重命名
批量处理图片(resize:grayscale)以及重命名 做深度学习,有大量图片需要做为训练集,为方便批量resize,rename,灰度化,制作python脚本. 先纪录一些函数: resize ...
- 006. Gitlab组件介绍
Gitlab组件 [root@master tools]# gitlab-ctl status #检查服务状态 run: gitaly: (pid 26704) 2201s; run: log: (p ...