实体类User:
public class User {
private String username;
private int age;
private List<UserHobby> userHobbyList;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public List<UserHobby> getUserHobbyList() {
return userHobbyList;
}
public void setUserHobbyList(List<UserHobby> userHobbyList) {
this.userHobbyList = userHobbyList;
}
@Override
public String toString() {
return "User{" +
"username='" + username + '\'' +
", age=" + age +
", userHobbyList=" + userHobbyList +
'}';
}
}
实体类UserHobby:
public class UserHobby {
private String hobby;
public String getHobby() {
return hobby;
}
public void setHobby(String hobby) {
this.hobby = hobby;
}
@Override
public String toString() {
return "UserHobby{" +
"hobby='" + hobby + '\'' +
'}';
}
}
测试代码:
public class TestClass {
public static void main(String[] args) {
Map<String, Object> map = new HashMap<>();
List<UserHobby> userHobbyList = new ArrayList<>();
for (int i=1;i<5;i++){
UserHobby userHobby = new UserHobby();
userHobby.setHobby("basketball" + i);
userHobbyList.add(userHobby);
}
map.put("username","AISMALL");
map.put("age", 18);
map.put("userHobbyList", userHobbyList);
//调用方法:将map中的键值对,封装进实体对象属性中
User user =mapToBean((HashMap<String, Object>)map, User.class);
System.out.println(user);
for ( UserHobby userHobby : user.getUserHobbyList()) {
System.out.println(userHobby);
}
}
/*
* HashMap<String, Object> map:map集合
* Class<T> c:实体类
* */
public static <T> T mapToBean(HashMap<String, Object> map, Class<T> c) {
try {
// 拿到实体类对象
T t = c.newInstance();
//1、拆开map,给对象t的属性赋值
Set<Map.Entry<String, Object>> entries = map.entrySet();
for (Map.Entry<String, Object> entry : entries) {
Field f = c.getDeclaredField(entry.getKey());
// 设置修改权限,可以拿到private权限的属性
f.setAccessible(true);
// 传递参数:第一个为实体类对象,第二个为map集合中的value值
f.set(t, entry.getValue());
}
//2、构建一个实体对象并返回
return t;
} catch (Exception e) {
e.printStackTrace();
//将异常放大,可不用写返回值
throw new RuntimeException("出错啦!");
}
}
}
测试结果:
User{username='AISMALL', age=18, userHobbyList=[UserHobby{hobby='basketball1'}, UserHobby{hobby='basketball2'}, UserHobby{hobby='basketball3'}, UserHobby{hobby='basketball4'}]}
UserHobby{hobby='basketball1'}
UserHobby{hobby='basketball2'}
UserHobby{hobby='basketball3'}
UserHobby{hobby='basketball4'}