`

使用反射将对象转Map

    博客分类:
  • java
阅读更多

 

//使用反射将对象转Map<String, String>
public class Object2Map {

 public static void main(String[] args) throws Exception{
  User user = new User();
  user.setName("zhangsan");
  user.setAge(20);
  user.setBirthday(new Date());
  
  Map<String, String> map = new HashMap<String, String>();
  Field[] fields = user.getClass().getDeclaredFields();
  for(Field f: fields){
//   System.out.println(f.getType()+f.getClass().getName());
   //对日期类型格式化
   if(f.getType().equals(java.util.Date.class)){
    Object dobj = getValue(user, f.getName());
    /*
    long time = ((Date)dobj).getTime();
    String val = new Date(time){
     public String toString(){
      return (this.getYear()+ 1900)+"-" + (this.getMonth() + 1) + "-" + this.getDate();
     }
    }.toString();
    */
    String val = date2str((Date)dobj);
    map.put(f.getName(), val);
    continue;
   }
   map.put(f.getName(), getValue(user, f.getName()).toString());
  }
  
  Set<Entry<String, String>> set = map.entrySet();
  for(Entry<String, String> e: set){
   System.out.println(e.getKey()+", "+ e.getValue());
  }
  
  
  
 }
 
 static Object getValue(Object o,String fieldName)throws Exception{
  String getMethod = "get" + Character.toUpperCase(fieldName.charAt(0))
   + fieldName.substring(1);
  Method m= o.getClass().getMethod(getMethod, new Class[]{});
  return m.invoke(o, new Object[]{});
 }
 
 static String date2str(Date d){
  SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
  return df.format(d);
 }

 static class User{
  private String name;
  private Integer age;
  private Date birthday;
  
  public String getName() {
   return name;
  }
  public void setName(String name) {
   this.name = name;
  }
  public Integer getAge() {
   return age;
  }
  public void setAge(Integer age) {
   this.age = age;
  }
  public Date getBirthday() {
   return birthday;
  }
  public void setBirthday(Date birthday) {
   this.birthday = birthday;
  }
 }
 
}

分享到:
评论

相关推荐

    将Map转换成Java实体

    使用 Core Java JDK1.8,将Map对象转换成Java实体对象的工具类完整代码。仅供交流学习。

    用于将map转换成对象的jar包

    在java中使用反射将map转换成成对应的对象,所使用的jar

    使用Java反射机制将Map转换为Java对象,支持Boolean、Date类型

    NULL 博文链接:https://chinesethink.iteye.com/blog/1601198

    windows下C++对象的反射功能

    该dll库先通过分析pdb文件获取结构体/类的变量名称、变量地址,并将指定的对象序列化成完整json字符串,极大降低了开发者工作量。 支持的类型:bool、char、int、float、double、std::vector、std::map、std::...

    反射PPT教程

    string url = context.Request.Url;//index.aspx //2 得到不带有扩展名的文件名称 string preStr = System.IO.Path.GetFileNameWithoutExtension(url);...将 页面对象 存入 上下文中 context.MapHandler = handler;

    MapTo:使用Roslyn源生成器的基于约定的对象到对象映射器

    它在编译时创建映射,从而消除了使用反射将一个对象映射到另一个对象的需求,并使在运行时比其他库更易于使用。安装dotnet add package MapTo --prerelease用法MapTo依靠一组属性来指导它如何生成映射。 首先,将...

    gridsearch4j:使用反射彻底设置目标对象上所有字段值组合的实用程序

    使用反射彻底设置目标对象上所有字段值组合的实用程序 例如,如果您有一个包含要搜索的字段的对象 class ToSearch { String a; int b; double c; } 地图用于指定要搜索的参数网格: // Construct an instance...

    BeanUtils.java

    对象和map对象互相转换

    用C++ 实现 简单的反射功能

    这段代码实现了一个简单的工厂模式,使用一个 map 来存储注册的类和对应的创建函数,然后根据类名来创建对应的对象。 在注册派生类的宏中,会生成一个名为 classname##RegisterHelper 的类,并在构造函数中调用 ...

    反射入门小练习

    练习用反射构造设置了初始值的pojo对象,难点在于对list和map属性的处理 待重构

    jTester使用指南(带书签).pdf

    使用反射方式构造对象实例 第 7 章 在测试代码中使用Mock 静态mock,new MockUp的使用 mock构造函数和静态代码块 new MockUp和spring的集成 针对静态mock做断言 动态mock,new Expectations的使用

    model的数据绑定给控件

    在制作b/s系统时,每次编辑时都要重新给控件赋值,都是做重复工作。现在利用反射来让model实体自动赋值给控件。

    面向对象技术与UML课件及源代码-by 南邮-陈杨

    10.7.1使用Map集合 10.7.2使用Hashtable和Properties 10.8小结 第11章Java IO操作 11.1认识IO操作 11.2用File类操作文件 11.2.1认识File类 11.2.2使用File类操作文件 11.2.3使用File类操作目录 11.3字节流...

    通过类名获取类的实例对象

    通过类的名称就可以找到类的对应实例对象,和JAVA中的反射差不多,使用时可能会应为map对象导致错误,正在改正中

    我的开源工具包

    做一些分享吧,我今天将部分写好的工具类以及一些工具包做一些分享。之前一直想开源来着,工作忙起来就忘了,部分代码使用系统不一定适合大家使用,可以自行修改。 下面说一下相关的几个项目所包含的内容以及依赖...

    廖雪峰 Java 教程.doc

    使用Map 编写equals和hashCode 使用EnumMap 使用TreeMap 使用Properties 使用Set 使用Queue 使用PriorityQueue 使用Deque 使用Stack 使用Iterator 使用Collections IO File对象 InputStream ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     B.2 运用反射机制来持久化Java对象 附录C 用XDoclet工具生成映射文件  C.1 创建带有@hibernate标记的Java源文件  C.2 建立项目的目录结构  C.3 运行XDoclet工具 附录D 发布和运行netstore应用  D.1 运行...

    mapstruct:用于生成类型安全的bean映射器的注释处理器

    与在运行时工作的映射框架相比,MapStruct具有以下优点: 通过使用普通方法调用而不是反射来快速执行编译时类型安全。 只能映射彼此映射的对象和属性,因此不会将订单实体意外映射到客户DTO等。 独立的代码-没有...

    C++反射功能

    众所周知,C++不支持反射,这让热衷C++的伙伴们难免有些失意,在需要用到反射的...该源码项目通过运用函数指针,tinyxml,哈希map等技术,实现了在配置文件xml中自由切换类名,程序运行时动态创建相应类对象的功能。

    Cubemap-splitter:给定VR立方体贴图的Photoshop脚本获取其建筑图像

    立方体贴图是六个正方形纹理的集合,代表了环境上的反射。 六个正方形构成围绕对象的假想立方体的面。 每个面代表沿世界坐标轴方向(上,下,左,右,前进和后退)的视图。 在Photoshop中已打开一系列VR Cubemap ...

Global site tag (gtag.js) - Google Analytics