Lambda 表达式

Lambda 表达式简化函数式接口匿名内部类的语法。

其表达式语法如下:([参数1], [参数2], [参数3],.... [参数n])->{代码块} 

//注意那是减号和大于号

  例如: 

//匿名内部类
public interface IComputer {
	void add(int a,int b);
}

public class Test {
	
	public static void main(String[] args) {
		IComputer computer = new IComputer() {

			@Override
			public void add(int a, int b) {
					System.out.println(a+b);
			}
			
		};
		computer.add(1,2);
	}
}


//Lambda 表达式
public interface IComputer {
	void add(int a,int b);
}

public class Test {
	public static void main(String[] args) {
		IComputer computer = (int a, int b)->{ //也可以把数据类型去掉
					System.out.println(a+b);
		};
		computer.add(1,2);
	}
}

①如果方法没有返回值且只有一行代码,则Lambda表达式语法可以是这种形式:

([参数1], [参数2], [参数3],.... [参数n])->单行语句

public interface IComputer {
	void add(int a,int b);
}

public class Test {
	public static void main(String[] args) {
		IComputer computer = (int a, int b)->System.out.println(a+b);
		computer.add(1,2);
	}
}

 ②如果方法返回值且只有一行代码,则Lambda表达式语法可以是这种形式:

 ([参数1], [参数2], [参数3],.... [参数n])->表达式

 

匿名内部类:
@FunctionalInterface
interface IComputer {
	int add(int a, int b);
}

public class Test {

	public static void main(String[] args) {
		IComputer computer = (a, b) -> {
			return a+b;
		};
		int result = computer.add(1,2);
		System.out.println(result);
	}
}


Lambda 表达式:
@FunctionalInterface
interface IComputer {
	int add(int a, int b);
}

public class Test {

	public static void main(String[] args) {
		IComputer computer = (a, b) -> a+b;
		int result = computer.add(1,2);
		System.out.println(result);
	}
}

 

### Lambda表达式的使用方法和示例 Lambda 表达式是一种简洁的语法形式,用于定义匿名函数或委托。它能够以非常紧凑的方式表示一段可执行逻辑,并且在多种编程语言中得到了广泛应用,例如 Java、C# 和 C++。 #### 基本语法与用法 Lambda 表达式的基本结构通常包括参数列表、箭头符号 `->` 或 `=>` 以及函数体。以下是一些典型的 Lambda 表达式示例: ```java // 无参Lambda表达式 Runnable runnable = () -> { System.out.println("Hello, World!"); }; ``` ```java // 有参Lambda表达式 Function<Integer, String> function = (num) -> "数字是:" + num; ``` ```java // 单行Lambda表达式 Predicate<String> predicate = (s) -> s.length() > 5; ``` 这些示例展示了如何通过 Lambda 表达式简化代码逻辑,使其更加直观和易于维护[^2]。 #### 在实际场景中的应用 Lambda 表达式的一个常见用途是作为参数传递给需要函数式接口的方法,例如在集合操作中进行过滤或映射: ```java public class Demo01Lambda { public static void method(int num, Calcable lambda) { System.out.println(lambda.cal(num)); } public static void main(String[] args) { method(-1314, n -> Math.abs(n)); // 使用Lambda表达式计算绝对值 [^1] } } ``` 在此示例中,Lambda 表达式 `n -> Math.abs(n)` 被用来替代一个单独定义的方法,从而减少了冗余代码并提高了可读性。 #### 与委托结合使用(C#) 在 C# 中,Lambda 表达式可以用来快速定义委托,而无需显式声明方法: ```csharp Func<int, int> square2 = x => x * x; // 使用Lambda表达式定义平方函数 Console.WriteLine(square2(5)); // 输出结果为25 [^3] ``` 这种写法不仅简化了代码结构,还使得逻辑意图更为清晰。 #### 方法引用与参数匹配 当 Lambda 表达式仅调用某个已存在的方法时,可以直接使用方法引用来进一步简化代码: ```java Function<String, Integer> func = String::length; // 正确:将字符串长度方法作为函数引用 ``` 此处的 `String::length` 是对 `String` 类中 `length()` 方法的一种直接引用,它等价于 `(s) -> s.length()`。这种方法引用方式要求被引用方法的参数列表必须与目标函数式接口的抽象方法参数相匹配[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值