我有一个有效的ArrayList对象形式java.lang.Object.我必须再次转换Object为ArrayList.我试过这个:
Object obj2 = from some source . . ;
ArrayList al1 = new ArrayList();
al1 = (ArrayList) obj2;
System.out.println("List2 Value: "+al1);
但它是印刷品null.我怎样才能做到这一点?
Kil*_*oth 12
这只会导致null如果obj2已经null在演员阵容之前,那么你的问题比你想象的要早.(另外,al1如果你要立即分配它,你不需要构造一个新的ArrayList来初始化.只需说ArrayList al1 = (ArrayList) obj2;.)
dim*_*thu 10
Object object = new Object();
// First way
List objects1 = new ArrayList<Object>();
objects1.add(object);
// second way
List<Object> objects2 = Arrays.asList(object);
// Third way
List<Object> objects3 = Collections.singletonList(object);
Run Code Online (Sandbox Code Playgroud)
假设您的对象是有效的 List 对象,并且如果您希望它采用特定的数据类型,请使用Stream.of(object):
Object o = Arrays.asList(1, 2);
((List<Object>) o).stream().map(String::valueOf).forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)
同样,您可以更改映射中的方法以转换为您需要的数据类型。
注意:这将导致Type safety: Unchecked cast. 发生这种情况是因为强制转换是运行时检查,并且当您从某个源接收到该类型时该类型已被删除。您可以使用@SuppressWarnings("unchecked")并接受它。
这可能是关于该主题的一篇好文章:Reified Generics for Java
您可以创建将所有集合转换为Java列表的util方法
public static List<?> convertObjectToList(Object obj) {
List<?> list = new ArrayList<>();
if (obj.getClass().isArray()) {
list = Arrays.asList((Object[])obj);
} else if (obj instanceof Collection) {
list = new ArrayList<>((Collection<?>)obj);
}
return list;
}
Run Code Online (Sandbox Code Playgroud)
您还可以在下面将此验证与之混合:
public static boolean isCollection(Object obj) {
return obj.getClass().isArray() || obj instanceof Collection;
}
Run Code Online (Sandbox Code Playgroud)
小智 5
你也可以这样做:
new ObjectMapper().convertValue(sourceObject, new TypeReference<List<YourTargetClass>>() {});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
83026 次 |
| 最近记录: |