Python 官方文档:入门教程 => 点击学习
目录Lambda表达式的使用Lambda表达式的省略模式Lambda使用注意事项Lambda表达式和匿名内部类的区别Lambda表达式的使用 练习: 定义一个接口flyable,里面
练习:
一个方法是useFlyable(Flyable f)
主方法,在主方法中调用useflyable方法
package Demo16;
public interface Flyable {
void fly(String s );
}
package Demo16;
import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput;
public class FlyableDemo {
public static void main(String[] args) {
useFlyable(new Flyable() {
@Override
public void fly(String s) {
System.out.println(s);
System.out.println("飞机自驾游");
}
});
System.out.println("----------------");
useFlyable( (String s ) -> {
System.out.println(s);
System.out.println("飞机自驾游");
});
}
private static void useFlyable(Flyable f){
f.fly("风和日丽,晴空万里");
}
}
练习2
一个方法是:useAddable(Addable)
一个主方法是,在主方法中调用useAddable方法
package Demo17;
public interface Addable {
int add(int x ,int y);
}
package Demo17;
public class AddableDemo {
public static void main(String[] args) {
//在主方法中调用useAddable方法
useAddable( (int x ,int y ) ->{
return x+y;//简化重写方法可以看做
});
}
private static void useAddable(Addable a){
int sum = a.add(10, 20);
System.out.println(sum);
}
}
省略规则:
package Demo17;
public class AddableDemo {
public static void main(String[] args) {
//在主方法中调用useAddable方法
// useAddable( (int x ,int y ) ->{
// return x+y;//简化重写方法可以看做
//参数的类型可以省略
// useAddable( (x,y) -> {
// return x+y;
// });
// //类型虽然可以省略,但是有多个参数的情况下不能只省略一个
// useFlyable( (String s ) -> {
// System.out.println(s);
// });//如果参数有且仅有一个,小括号可以省略
// useFlyable( s -> {
// System.out.println(s);
// });
//如果代码块的语句只有一条,可以省略大括号和分号
useFlyable( s -> System.out.println(s));
//useAddable( (x,y) -> return x+y);//如果有return,return也要省略,只针对代码块只有一条的情况
useAddable( (x,y) -> x+y);
}
private static void useAddable(Addable a){
int sum = a.add(10, 20);
System.out.println(sum);
}
private static void useFlyable(Flyable f){
f.fly("风和日丽,晴空万里");
}
}
根据局部变量的赋值得知lambda对应的接口:Runnable r = () -> System.out.println("lambda表达式");
根据调用方法的参数得知lambda对应的接口:new Thread( () -> System.out.println("lambda表达式")).start();
package Demo18;
public class LambdaDemo {
public static void main(String[] args) {
// useInter( () -> {
// System.out.println("好好学习,天天向上");
// });
//使用Lambda必须要有接口,并且接口有且仅有一个抽象方法
useInter( () -> System.out.println("好好学习,天天向上"));
//必须要有上下文华宁,才能推导出lambda对应接口
// new Thread(new Runnable() {
// @Override
// public void run() {
// System.out.println("匿名内部类");
// }
// });
Runnable r = () -> System.out.println("lambda表达式");
new Thread(r).start();
new Thread( () -> System.out.println("lambda表达式")).start();
}
private static void useInter(Inter i ){
i.show();
}
}
所需类型不同:
使用限制不同:
实现原理不同:
package Demo19;
public class LambdaDemo {
public static void main(String[] args) {
////匿名内部类,接口可以使用多个抽象方法
// useInter(new Inter() {
// @Override
// public void show1() {
// System.out.println("接口");
// }
// public void show2() {
// System.out.println("接口");
// }
// });
// useAnimal(new Animal() {
// @Override
// public void method() {
// System.out.println("抽象类");
// }
// });
// useStudent(new Student(){
// @Override
// public void study(){
// System.out.println("具体类");
// }
// });
//lambda,接口有且仅有一个抽象方法
// useInter( () -> System.out.println("接口"));
//useAnimal(() -> System.out.println("接口"));
// useStudent(() -> System.out.println("具体类"));
//使用lambda的地方参数必须是一个接口(有且只有一个)
}
private static void useStudent(Student s ){s.study();}
private static void useAnimal(Animal a ){a.method();}
private static void useInter(Inter i ){i.show1();i.show2();}
}
到此这篇关于Lambda表达式的使用及注意事项的文章就介绍到这了,更多相关Lambda表达式 内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
--结束END--
本文标题: Lambda表达式的使用及注意事项
本文链接: https://lsjlt.com/news/153035.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0