//使用反射将对象转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;
}
}
}
相关推荐
使用 Core Java JDK1.8,将Map对象转换成Java实体对象的工具类完整代码。仅供交流学习。
在java中使用反射将map转换成成对应的对象,所使用的jar
NULL 博文链接:https://chinesethink.iteye.com/blog/1601198
该dll库先通过分析pdb文件获取结构体/类的变量名称、变量地址,并将指定的对象序列化成完整json字符串,极大降低了开发者工作量。 支持的类型:bool、char、int、float、double、std::vector、std::map、std::...
string url = context.Request.Url;//index.aspx //2 得到不带有扩展名的文件名称 string preStr = System.IO.Path.GetFileNameWithoutExtension(url);...将 页面对象 存入 上下文中 context.MapHandler = handler;
它在编译时创建映射,从而消除了使用反射将一个对象映射到另一个对象的需求,并使在运行时比其他库更易于使用。安装dotnet add package MapTo --prerelease用法MapTo依靠一组属性来指导它如何生成映射。 首先,将...
使用反射彻底设置目标对象上所有字段值组合的实用程序 例如,如果您有一个包含要搜索的字段的对象 class ToSearch { String a; int b; double c; } 地图用于指定要搜索的参数网格: // Construct an instance...
对象和map对象互相转换
这段代码实现了一个简单的工厂模式,使用一个 map 来存储注册的类和对应的创建函数,然后根据类名来创建对应的对象。 在注册派生类的宏中,会生成一个名为 classname##RegisterHelper 的类,并在构造函数中调用 ...
练习用反射构造设置了初始值的pojo对象,难点在于对list和map属性的处理 待重构
使用反射方式构造对象实例 第 7 章 在测试代码中使用Mock 静态mock,new MockUp的使用 mock构造函数和静态代码块 new MockUp和spring的集成 针对静态mock做断言 动态mock,new Expectations的使用
在制作b/s系统时,每次编辑时都要重新给控件赋值,都是做重复工作。现在利用反射来让model实体自动赋值给控件。
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对象导致错误,正在改正中
做一些分享吧,我今天将部分写好的工具类以及一些工具包做一些分享。之前一直想开源来着,工作忙起来就忘了,部分代码使用系统不一定适合大家使用,可以自行修改。 下面说一下相关的几个项目所包含的内容以及依赖...
使用Map 编写equals和hashCode 使用EnumMap 使用TreeMap 使用Properties 使用Set 使用Queue 使用PriorityQueue 使用Deque 使用Stack 使用Iterator 使用Collections IO File对象 InputStream ...
B.2 运用反射机制来持久化Java对象 附录C 用XDoclet工具生成映射文件 C.1 创建带有@hibernate标记的Java源文件 C.2 建立项目的目录结构 C.3 运行XDoclet工具 附录D 发布和运行netstore应用 D.1 运行...
与在运行时工作的映射框架相比,MapStruct具有以下优点: 通过使用普通方法调用而不是反射来快速执行编译时类型安全。 只能映射彼此映射的对象和属性,因此不会将订单实体意外映射到客户DTO等。 独立的代码-没有...
众所周知,C++不支持反射,这让热衷C++的伙伴们难免有些失意,在需要用到反射的...该源码项目通过运用函数指针,tinyxml,哈希map等技术,实现了在配置文件xml中自由切换类名,程序运行时动态创建相应类对象的功能。
立方体贴图是六个正方形纹理的集合,代表了环境上的反射。 六个正方形构成围绕对象的假想立方体的面。 每个面代表沿世界坐标轴方向(上,下,左,右,前进和后退)的视图。 在Photoshop中已打开一系列VR Cubemap ...