在 return 语句中找不到适合 ArrayList<String> .toArray(String[]::new) 的方法
No suitable method found for ArrayList<String> .toArray(String[]::new) in return statement
我正在网站 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 语句更改为
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)
我正在网站 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 语句更改为
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)