首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >编译错误:使用数组括号非法启动表达式

编译错误:使用数组括号非法启动表达式
EN

Stack Overflow用户
提问于 2019-04-01 05:11:28
回答 1查看 0关注 0票数 0

我正在编写一些代码来通过for循环运行一个对象列表,运行一个函数,然后将函数的结果打印成一个数组并返回数组。在声明我的数组时,我的括号中出现了非法的表达式错误开始错误,但我的所有花括号都处于正确的位置,我找不到任何愚蠢的错误。

我已经尝试更改对象和所有内容,但这是一个赋值,我只能更改computeStrings方法中的代码。

代码语言:javascript
复制
public static List<String> computeStrings(List<Employee> employeeList, Function<Employee, String> f) {
   int size = employeeList.size();
   <String>[] array = new String[size];

   for(int i = 0; i < size;i++){
      array[i] = employeeList[i].f;
   }

   return array;
}
代码语言:javascript
复制
Main.java:47: error: illegal start of expression
        <String>[] array = new String[size];
                ^
Main.java:47: error: illegal start of expression
        <String>[] array = new String[size];
                 ^
EN

回答 1

Stack Overflow用户

发布于 2019-04-01 14:57:41

代码语言:javascript
复制
<String>[] array

不是法律声明的表达。

代码语言:javascript
复制
String[] array

还有

代码语言:javascript
复制
employeeList[i]

也不合法,因为你正在处理 List<T>而不是数组。因此你需要

代码语言:javascript
复制
employeeList.get(i)

我已经看到你传递一个函数作为输入,所以你想要执行

代码语言:javascript
复制
f.apply(employeeList.get(i));

完整的代码结果

代码语言:javascript
复制
public static List<String> computeStrings(
       final List<Employee> employeeList,
       final Function<Employee, String> f) {
   final int size = employeeList.size();
   final List<String> array = new ArrayList(size);

   for (int i = 0; i < size; i++){
      array.add(f.apply(employeeList.get(i)));
   }

   return array;
}

您可以选择for使用a来简化循环Stream

代码语言:javascript
复制
final List<String> array =
        employeeList.stream()
                    .map(e -> f.apply(e)) // expanded, simplifiable to "map(f)"
                    .collect(Collectors.toList());
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100006534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档