gpt4 book ai didi

java - 在 return 语句中找不到适合 ArrayList .toArray(String[]::new) 的方法

转载 作者:搜寻专家 更新时间:2023-10-30 21:27:16 25 4
gpt4 key购买 nike

我正在网站上工作 Codingbat , 特别是 AP-1 中的这个方法

public String[] wordsWithout(String[] words, String target) {
ArrayList<String> al = new ArrayList<>(Arrays.asList(words));
al.removeIf(s -> s.equals(target));
return al.toArray(new String[al.size()]);
}

此实现有效,它是当前提交的内容,但是当我将返回语句更改为

return al.toArray(String[]::new);

据我所知应该可以工作,但出现以下错误:

no suitable method found for toArray((size)->ne[...]size])
method java.util.Collection.<T>toArray(T[]) is not applicable
(cannot infer type-variable(s) T
(argument mismatch; Array is not a functional interface))
method java.util.List.<T>toArray(T[]) is not applicable
(cannot infer type-variable(s) T
(argument mismatch; Array is not a functional interface))
method java.util.AbstractCollection.<T>toArray(T[]) is not applicable
(cannot infer type-variable(s) T
(argument mismatch; Array is not a functional interface))
method java.util.ArrayList.<T>toArray(T[]) is not applicable
(cannot infer type-variable(s) T
(argument mismatch; Array is not a functional interface)) line:4

谁能解释一下为什么这不起作用?

最佳答案

这个:

al.toArray(String[]::new)

仅在 java-11 之后通过以下方式支持:

default <T> T[] toArray(IntFunction<T[]> generator) {
return toArray(generator.apply(0));
}

如果你想使用那个方法引用,你必须先stream(),比如:

 al.stream().toArray(String[]::new)

关于java - 在 return 语句中找不到适合 ArrayList<String> .toArray(String[]::new) 的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52720685/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com