
Lambda表达式
lambda 表达式是在Java8 中引入的 。 lambda表达式是一个可以传递的代码块 , 可以在以后执行一次或者多次 。
简洁语法 , 函数式编程(Java中以对象为基础 , 如果想要传递一个代码块x , 需要在传递的对象中的包含某种方法中囊括这些代码块 , 解决此问题)避免匿名内部类定义过多 , 简化代码 。
lambda表达式形式表达式形式: (参数) , 箭头(->)表达式
exp:
Comparator<String> comparator = (String s1 String s2 )->{
if (s1.length() > s2.length()) {
return 1;
else if (s1.length() == s2.length()) {
return 0;
else {
return -1;
;
- 如果lambda没有参数 其中的 ()不能省略
System.out.println(\"abc\");
;
- 如果lambda表达式的参数类型可以由编译器推导出 , 可以忽略参数类型定义 。
if (s1.length() > s2.length()) {
return 1;
else if (s1.length() == s2.length()) {
return 0;
else {
return -1;
;
- 如果方法只有一个参数 , 而且这个参数的类型可以推导 , 还可以省略小括号 。
System.out.println(\"Hello\");
;
- 如果方法只有一条语句 , {也可以省略
无需指定lambda表达式的返回类型 , lambda表达式的返回类型由上下文推导得出 。
如果lambda表达式只在某些条件分支有返回值 , 是不合法的 , 也即由上下文推导出的返回值类型必须一致 。
- 错误例子如下:
if (s1.length() > s2.length()) {
return 1;
else if (s1.length() == s2.length()) {
return 0;
;
- 使用lambda表达式:
import java.util.Arrays;
import java.util.Comparator;
import javax.swing.JOptionPane;
import javax.swing.Timer;
public class LambdaTest {
public static void main(String[
args) {
String [
plants = new String[
{
\"Andy\"\"Jacob\" \"xiaoHong\" \"Bob\" \"Cindy\" \"Lucy\" \"David\"
;
// 打印原字符串数组
System.out.println(Arrays.toString(plants));
- 手机同质化一直非常的严重|小米13系列好评满满,骁龙8gen2比苹果a16更强
- 12月13日消息|苹果appletv4k搭载的a15处理器为5核心
- 小米|双尺寸旗舰对标苹果!小米13系列明日开售:3999元起
- 苹果已测试部分m1/m2mac设备出现wi-fi连接问题
- 苹果|覆盖地区远超华为Mate 50!iPhone 14卫星通信新上线4个国家
- 很多朋友在提到电竞手机时|联想拯救者Y70体验:电竞手机中的正装野兽
- 苹果|iPad 10耐用性测试:惨遭一掰两半!质量堪忧
- 索尼|iPhone 15拍照值得期待!苹果CEO库克拜访索尼传感器工厂
- 苹果|苹果将在Q4取代三星:夺得全球智能手机市场第一
- iPhone|雷军希望的超越苹果做到了!近8成网友认为小米13比iPhone 14 Pro好看
