小胖脚丫儿
2015-11-04 09:07
采纳率: 66.7%
浏览 5.8k
已采纳

JAVA 8 使用 Lambda 用法时报错,有谁知道怎么解决么?

public class ListErr
{
public static void main(String[] args)
{
// 创建一个只想保存字符串的List集合
List strList = new ArrayList();
strList.add("疯狂Java讲义");
strList.add("疯狂Android讲义");
// "不小心"把一个Integer对象"丢进"了集合
strList.add(5); // ①
strList.forEach(str -> System.out.println(((String)str).length())); // ②
}
}

代码图如下:
图片说明

一直有这个问题,不知道是为什么,有谁知道么?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • 小胖脚丫儿 2015-11-30 07:47
    已采纳

    图片说明

    这种写法应该是正确的,最后找到了方法,直接在cmd窗口中,运行Java 类名,就可以正常运行,也不会报错,MyEclipse 和 eclipse 运行都不行的

    点赞 打赏 评论
  • blownewbee 2015-11-04 13:33

    编译器用的是java 8么,str是否需要定义类型(虽然C#不需要,但是java不是很确定,你查下)

    点赞 打赏 评论
  • blownewbee 2015-11-04 13:34

    lambda body 代码是否要加 { }

    点赞 打赏 评论
  • Angoooora 2015-11-06 06:06

    要加{}, ->右侧是表达式或者一个值的时候不需要加{}

    点赞 打赏 评论
  • 小胖脚丫儿 2015-11-30 07:39

    这种写法应该是正确的,最后找到了方法,直接在cmd窗口中,运行Java 类名,就可以正常运行,也不会报错,MyEclipse 和 eclipse 运行都不行的

    点赞 打赏 评论
  • RhikYn 2019-05-24 20:07

    在Lambda标准格式的基础上,使用省略写法的规则为:
    1. 小括号内参数的类型可以省略;
    2. 如果小括号内有且仅有一个参数,则小括号可以省略;
    3. 如果大括号内有且仅有一个语句,则无论是否有返回值,都可以省略大括号、return关键字及语句分号。

    箭头要写对减号大于号 ->

    点赞 打赏 评论

相关推荐 更多相似问题