【发布时间】:2021-08-12 04:10:49
【问题描述】:
我正在实施课程
class PairStringList extends ArrayList<String> {
...
@Override
public <T> T[] toArray(T[] a) {
return super.toArray(a);
}
}
我为这个类编写了测试,他们使用这样的声明:
assertArrayEquals(new String[]{}, list.toArray(String[]::new));
我看到他们使用 Lambda 作为参数。如何实现 toArray() 方法来正确运行测试?现在我有了下一个构建输出:
没有找到适合 toArray(String[]::new) 的方法 方法 Java.util.Collection.toArray(T[]) 不适用 (无法推断类型变量 T (参数不匹配;数组不是函数接口))
任何想法,我该如何解决这个问题?
注意:我无法更改测试代码
感谢大家!问题已解决。 问题是测试是用 Java 11 编写的,但我使用的是 Java 8。更新到 Java 11 后,一切都可以构建和编译
【问题讨论】:
-
您的测试为我编译并通过。测试中你的变量
list是什么类型的? -
如果一个空班
class PairStringList extends ArrayList<String> {}已经通过了测试,你能试试吗?