c语言sscanf函数的用法是什么
255
2022-12-15
Java中Lambda表达式基础及使用
目录一、举例说明1、无参无返回1.1 定义一个接口1.2接口实现类1.3 测试类2、有参无返回代码示例3、有参有返回二、简单事项1、省略模式2、注意事项三、Lambda表达式和匿名内部类的区别1、所需类型不同:2、使用限制不同:3、实现原理不同:
标准格式:
三要素:形式参数 箭头 代码块
格式:(形式参数)->{代码块}
形式参数:如果多个参数用逗号隔开,无参留空
->:英文中划线和大于号组成
代码块:具体要做的事
使用前提:
有一个接口
接口中有且仅有一个抽象方法
一、举例说明
1、无参无返回
1.1 定义一个接口
public interface Eatable {
void eat();
}
1.2接口实现类
public class EatableImpl impMrYbtwlements Eatable{
@Override
public void eat() {
System.out.println("一天一苹果");
}
}
1.3 测试类
public class EatableDemo {
public static void main(String[] args) {
//主方法调用useEatable
Eatable e = new EatableImpl();
useEatable(e);
//匿名内部类
useEatable(new Eatable() {
@Override
public void eat() {
System.out.println("一天一苹果");
}
});
//lambda表达式
MrYbtw useEatable(() -> {
System.out.println("一天一苹果");
});
}
private static void useEatable(Eatable e){
e.eat();
}
}
2、有参无返回代码示例
public interfaceMrYbtw Eatable {
void eat(String name);
}
public class EatDemo {
public static void main(String[] args) {
useEat((String name) -> {
System.out.println(name);
System.out.println("输出的啥");
});
}
private static void useEat(Eatable e){
e.eat("苹果");
}
}
3、有参有返回
public interface Addable {
int add(int x,int y);
}
1.
2.
3.
public class AddableDemo {
public static void main(String[] args) {
useAddable( (int x,int y ) -> {
return x+y;
});
}
private static void useAddable(Addable a){
int sum = a.add(5, 7);
System.out.println(sum);
}
}
二、简单事项
1、省略模式
参数的类型可省略,多个参数时候不可只省略一个;
如果参数有且仅有一个可省略大括号和分号;
如果代码块的语句只有一条,可省略大括号和分号(有return时return也省略掉)
2、注意事项
必须要有接口,接口中有且仅有一个抽象方法
必须有上下文环境,才能推导出Lambda对应的接口:局部变量的赋值、调用方法的参数
三、Lambda表达式和匿名内部类的区别
1、所需类型不同:
匿名内部类:可以是接口,也可以是抽象类,还可以是具体类
Lambda表达式:只能是接口
2、使用限制不同:
如果接口中有且仅有一个抽象类,两者都可以使用
接口中多于一个抽象类,只能使用匿名内部类
3、实现原理不同:
匿名内部类:编译之后,产生一个单独的.class字节码文件
Lambda表达式:编译之后,没有单独的.class字节码文件,对应的字节码会在运行时动态的生成
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~