Object[] os= new Object[]{"a","b","c"};
String[] ss= (String[]) os;
System.out.println(ss);

报运行时错误 ,无法进行类型转换。List容器中也会出现这个问题。

List<Object> listObect = new ArrayList<>();
listObect.add("a");
listObect.add("b");
List<String> listString = (List<ObjectList>)listObect;

这一段,编译期直接报错。

正确写法,先拆成array,再进行类型转换

List<Object> listObect = new ArrayList<>();
listObect.add("a");
listObect.add("b");
List<String> listString = Arrays.asList(listObect.toArray(new String[listObect.size()]));
System.out.println(listString);

或者使用 Collections.addAll(Collection<? super T> c, T... elements)方法

List<Object> listObect = new ArrayList<>();
listObect.add("a");
listObect.add("b");
List<String> listString = new ArrayList<>();
Collections.addAll(listString, listObect.toArray(new String[listObect.size()]));
System.out.println(listString);

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐