call to 'toarray()' with pre-sized array argument
时间: 2024-01-15 09:02:59 浏览: 8
这个错误通常发生在使用Java语言的时候,当你调用一个toArray()方法并传入一个预设大小的数组作为参数时,就会出现这个错误。这是因为在toArray()方法内部,会根据传入的数组的大小来判断是否需要创建一个新的数组,而传入预设大小的数组会导致该方法无法创建新的数组。要解决这个问题,你可以不传入预设大小的数组,或者传入一个比预设大小更大的数组。
相关问题
list.stream().toArray(value -> new String[value]);
这行代码是将一个 List 转换成数组。其中,使用了 Java 8 中的 Stream API。具体来说,stream() 方法将 List 转换成 Stream 对象,然后调用 toArray() 方法将 Stream 转换成数组。
在 toArray() 方法中,我们可以传递一个函数式接口,它的作用是根据数组元素的类型创建一个新的数组。在这个例子中,我们传递了一个 lambda 表达式 value -> new String[value],它接收一个 int 类型的参数 value,表示数组的长度,然后返回一个新的 String 数组。
简单来说,这行代码的作用就是将 List<String> 转换成 String[] 数组。
Implicit call to 'toString()' on array returned by call to 'httpHosts.toArray(new HttpHost[0])'
这个问题是由Java编译器自动插入的toString()方法导致的。在Java中,当你打印一个对象时,编译器会默认调用该对象的toString()方法来将其转换为字符串。在这个问题中,httpHosts.toArray(new HttpHost[0])返回的是一个HttpHost数组,而当你使用System.out.println()打印该数组时,编译器会自动调用该数组的toString()方法,但是Java中的数组没有重写toString()方法,因此编译器会使用默认的toString()方法来将其转换为字符串,从而导致这个警告信息的出现。
解决这个问题的方法是,将该数组转换为List,然后使用List的toString()方法来打印该数组,或者手动编写一个toString()方法来将该数组转换为字符串。例如,你可以使用以下代码将该数组转换为List并打印出来:
```
List<HttpHost> hostList = Arrays.asList(httpHosts);
System.out.println(hostList.toString());
```
这样就可以避免警告信息的出现了。