Java表达式lambda
大纲
一、lambda表达式介绍
二、lambda表达式基本使用
lambda表达式介绍
lambda表达式是在JDK1.8提供出来的,用来简化传统编写开发中,接口中方法的调用处理。
范例:观察问题
package cn.txp.lambda; /* * 定义一个接口 */ interface Lambdainfo{ /* * 返回传递过来的值 */ void getMsg (String msg); } public class LambdaDemo1 { public static void main(String[] args) { Lambdainfo info = new Lambdainfo() { @Override public void getMsg(String msg) { System.out.println("传入的值:" + msg); } }; info.getMsg("lambda表达式"); } }
通过以上代码会发现,在Java中,接口中只允许声明而不允许实现,具体的实现需要交由其接口实现子类进行实现。但是还可以通过实例化匿名的接口来实现调用。以上就是通过匿名的接口来实现调用的。此时会发现只是简单的调用一个方法需要这个繁杂的代码编写,为了简化这样的开发。可以用lambda表达式来简化操作。
package cn.txp.lambda; /* * 定义一个接口 */ interface LambdaContent{ /* * 返回传递过来的值 */ void getMsg (String msg); } public class LambdaDemo2 { public static void main(String[] args) { LambdaContent lc = (str) -> {System.out.println(str);}; lc.getMsg("lambda表达式"); } }
Lambda表达式基本使用
Lambda表达式使用提供了几种格式:
调用的方法没有参数: () ->{};
调用的方法有参数:(参数, 参数) -> {};
如果调用的方法只有一行语句返回:() -> 语句:
package cn.txp.lambda; /* * 调用没有参数的方法 */ interface Lambdainfo{ void getMsg (); } public class LambdaDemo1 { public static void main(String[] args) { Lambdainfo li = () -> { System.out.println("lambda表达式"); }; li.getMsg(); } }
package cn.txp.lambda; /* * 有参数方法 */
@FunctionalInterface // JDK1.8提供的注解,表示此时定义的接口为函数接口
interface Lambdainfo{ /* * 返回传递过来的值 */ void getMsg (String msg); } public class LambdaDemo1 { public static void main(String[] args) { Lambdainfo li = (param) -> {System.out.println("传递过来的值:" + param);}; li.getMsg("lambda表达式"); } }
package cn.txp.lambda; /* * 定义一个接口 */ @FunctionalInterface // JDK1.8提供的注解,表示此时定义的接口为函数接口 interface Lambdainfo{ int add(int paramone, int paramtow); } public class LambdaDemo1 { public static void main(String[] args) { Lambdainfo li = (p1, p2) -> {return p1 + p2;}; System.out.println(li.add(10, 20)); // 如果只有一条返回语句,可以省略{ }括号 Lambdainfo lbi = (p1, p2) -> p1 + p2; System.out.println(lbi.add(10, 40)); } }
知乎文章: https://www.zhihu.com/people/tan-xu-peng-44
编程专业知识:https://www.cnblogs.com/tjava
编程开发技术问题解决CSDN:https://blog.csdn.net/qq_37291829
JQuery使用方法
浙公网安备 33010602011771号