java封装map_怎么把一个javabean里面的属性封装成map集合

  • Post author:
  • Post category:java


展开全部

答:基本思想,利用java中的反射机制

1.首先32313133353236313431303231363533e4b893e5b19e31333363373162先自定义一个javabean,比如Userpackage aishang.reflect;

public class User {

private int age;

private String name;

public User() {

super();

}

public User(String name) {

super();

this.name = name;

}

public User(int age, String name) {

super();

this.age = age;

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

@Override

public String toString() {

return “User [age=” + age + “, name=” + name + “]”;

}

}

2.利用反射机制,读取javabean中的全部属性Class> clazz = Class.forName(“aishang.reflect.User”);

Map myMap = new HashMap();

// 取得本类的全部属性

Field[] field = clazz.getDeclaredFields();

for (int i = 0; i

// 权限修饰符

//int mo = field[i].getModifiers();

//String priv = Modifier.toString(mo);

// 属性类型

//Class> type = field[i].getType();

//System.out.println(priv + ” ” + type.getName() + ” ” + field[i].getName() + “;”);

//————————————————————-

//获取属性名:field[i].getName()

//将属性名封装到map中

myMap.put(field[i].getName(),null);

}

3.上述Map结构和User类的对应已经建立好,Map的Key就是User的属性名,但是Map中的Value还是空的,如果有需要可以将User对象的实例的值,映射到Map的Value中去,实例代码如下:User user = new User();

user.setName(“姜磊”);

user.setAge(23);

for (Map.Entry m : myMap.entrySet()) {

String name = m.getKey();

//Object value = m.getValue();

//创建一属性描述器,将属性描述器映射到User类中

PropertyDescriptor pd = new PropertyDescriptor(name, User.class);

//得到getter属性

Method getter = pd.getReadMethod();

//将方法反射到User类中,读出属性的值

Object o = getter.invoke(user,null);

//System.out.println(o);

//给map重新赋值

myMap.put(name, o);

}

System.out.println(myMap.get(“age”));

System.out.println(myMap.get(“name”));



版权声明:本文为weixin_42513365原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。