Java 方法,详细信息
为什么它不起作用Java 方法,详细信息,java,arrays,list,arraylist,toarray,Java,Arrays,List,Arraylist,Toarray,为什么它不起作用 List<String> lista = new ArrayList<>(); lista.add("Lol"); lista.add("ball"); String [] array = (String[])lista.toArray(); List lista=new ArrayList(); 添加(“Lol”); 添加(“球”); 字符串[]数组=(字符串[])lista.toArray(); 它
List<String> lista = new ArrayList<>();
lista.add("Lol");
lista.add("ball");
String [] array = (String[])lista.toArray();
List lista=new ArrayList();
添加(“Lol”);
添加(“球”);
字符串[]数组=(字符串[])lista.toArray();
它抛出一个RunTimeException(ClassCastException)
,我知道还有另一个方法用于返回列表中包含的对象,但是幕后发生了什么?我的意思是,我正在将一个对象数组转换为一个字符串数组。所以它应该编译,但它没有。
提前谢谢。
由于,返回一个对象[]
。在运行时,列表不知道是否有字符串对象。从那里你可以看到错误的来源
不能将对象[]
类型强制转换为字符串[]
由于,返回一个对象[]
。在运行时,列表不知道是否有字符串对象。从那里你可以看到错误的来源
不能将
对象[]
类型转换为字符串[]
对象数组不是字符串数组,并且不能转换为字符串数组
检查。对象数组不是字符串数组,不能被强制转换为一个 检查。该版本的toArray()返回
对象[]
。即使对象数组中的所有对象都是字符串,也不能将其强制转换为字符串数组
您可以使用lista.toArray(新字符串[lista.size()])代码>版本以正确获取实际类型。该版本的toArray()返回对象[]
。即使对象数组中的所有对象都是字符串,也不能将其强制转换为字符串数组
您可以使用lista.toArray(新字符串[lista.size()])编码>版本以正确获取实际类型。改用toArray(T[]a)
即
List lista=new ArrayList();
添加(“Lol”);
添加(“球”);
String[]array=lista.toArray(新字符串[1]);
这确保toArray返回String[]类型的数组
正如其他人所指出的,toArray()返回Object[]类型的数组,并且从Object[]到String[]的强制转换是非法的。请改用toArray(T[]a)
即
List lista=new ArrayList();
添加(“Lol”);
添加(“球”);
String[]array=lista.toArray(新字符串[1]);
这确保toArray返回String[]类型的数组
正如其他人所指出的,toArray()返回Object[]类型的数组,并且从Object[]到String[]的强制转换是非法的。List lista=new ArrayList();-->List lista=new ArrayList() List lista=new ArrayList();-->List lista=new ArrayList() 有两个toArray()版本。您可以使用另一个 有两个toArray()版本。您可以使用另一个 正如我在问题中所述,我知道这一点。但是我想知道为什么。由于使用了泛型,很明显这是一个字符串数组,正如我在问题中指定的那样,我知道它。但是我想知道为什么。由于使用了泛型,很明显它是一个字符串数组
List<String> lista = new ArrayList<String>();
lista.add("Lol");
lista.add("ball");
String [] array = lista.toArray(new string[1]);