已修正
一、案例1
将List<Object>强制类型转换为指定类型的List集合。
先看下面一个例子:
public class Test {
public static void main(String[] args) {
List<Object> list = getList();
//List<User> userList = (List<User>)list;//编译失败
//方式一:
for (Object o : list){
User user = (User) o;
System.out.println(user.getName());
}
//方式二:
//List<?> list2 = getList();
List<Object> list2 = getList();
List<?> tepList2 = list2 ;
List<User> userList = tepList2
}
public static List<Object> getList(){
List<Object> list = new ArrayList<>();
User user = new User("junjie","25");
User user2 = new User("junjie2","25");
list.add(user);
list.add(user2);
return list;
}
@Data
@AllArgsConstructor
static class User{
String name;
String age;
}
}
直接使用List<User> userList = (List<User>)list;会编译失败,因此只能一个个元素进行遍历。
如此,也可以达到我们需要的效果,但是还有没有更好的方式呢,答案是有的。
二、案例2
public class Test {
public static void main(String[] args) {
Map<String, ?> map = getList();
List<User> userList = (List<User>) map.get("userList");
List<Salary> salaryList = (List<Salary>) map.get("salaryList");
for (User user : userList){
System.out.println(user.getName());
}
}
@Data
@AllArgsConstructor
static class User{
String name;
String age;
}
@Data
@AllArgsConstructor
static class Salary{
String name;
String sal;
}
public static Map<String,?> getList(){
List<User> list = new ArrayList<>();
User user = new User("junjie","25");
User user2 = new User("junjie2","25");
User user3 = new User("junjie3","25");
list.add(user);
list.add(user2);
list.add(user3);
List<Salary> list2 = new ArrayList<>();
Salary salary = new Salary("junjie","1000");
Salary salary2 = new Salary("junjie2","2000");
Salary salary3 = new Salary("junjie3","3333");
list2.add(salary);
list2.add(salary2);
list2.add(salary3);
Map<String, List<?>> map = new HashMap<>();
map.put("userList",list);
map.put("salaryList",list2);
return map;
}
}