Java 反射获取对象里的值
2020-11-30 19:26
483 查看
最近在负责邮件服务,里面会涉及到很多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反射(Reflection)机制获取对象
- Java基础——反射之获取对象信息
- JAVA反射初探之获取一个实例对象
- Java反射(一) : 获取Class对象
- java反射获取构造器以及调用构造器创建对象
- java 反射机制 之 Class.forName() 获取class的对象
- java 利用反射获取类对象中List的值
- Java反射获取类和对象信息全解析
- Java学习 之 获取Class对象、使用反射生成并操作对象
- JAVA反射(一)获取Class对象的三种方式及其区别
- java 反射 获取Class对象的三种方式
- java高级33- 反射获取类对象
- Java反射通过Getter方法获取对象VO的属性值过程解析
- 测试 java反射Reflection中 获取 类属性、方法、构造方法及 调用类方法改变 对象属性
- java反射,获取类对象所有成员变量,从字符串调用函数
- java反射之Field 获取对象属性及设置属性值
- java 反射通过类名获取对象
- java中使用反射获取对象的属性和属性值
- Java反射获取类和对象信息全解析
- Java反射获取对象属性并设值