Java8中字符串空值检测的正确Lambda表达式咨询
关于检测字符串非空的Lambda表达式正确性分析
嘿,我来帮你把这个Lambda的问题掰明白~首先得明确Java里Lambda表达式的标准语法规则:参数列表要用圆括号()包裹,参数类型可以省略(只要上下文能自动推断出来),连接参数和逻辑体的箭头必须是->,可不是别的符号哦。现在咱们逐个看选项:
选项1:
(String value) -> value != null;
这完全符合Java的Lambda语法规范。显式指定了参数的String类型,用圆括号把参数包起来,用正确的->箭头连接,逻辑部分也是合法的布尔表达式。如果你的需求是判断字符串引用不为null,这个写法完全没问题。选项2:
(value) => value != null;
哦,这个箭头=>是C#这类语言里的Lambda写法,Java根本不认识这个符号,把它放到Java代码里肯定会编译报错,所以这个是错的。选项3:
[String value] -> value != null;
Java Lambda的参数列表只能用圆括号(),方括号[]是用来声明数组或者其他场景的,这里用方括号包参数完全不符合语法,直接pass。选项4:
(auto value) -> value != null;
Java里没有auto这个关键字用来声明参数类型哦,如果想让编译器自动推断参数类型,Java 10及以上可以用var,但auto是C++的用法,放到Java里就是语法错误。
所以你之前倾向的选项2其实是其他语言的写法,Java环境下正确的应该是选项1哒。
内容的提问来源于stack exchange,提问作者stack overflow
相关产品推荐
相关产品推荐

