当前位置: 首页 > news >正文

聊城网站建设设计实力公司seo初学教程

聊城网站建设设计实力公司,seo初学教程,wordpress 收邮件,dw网站的滑屏怎么做Lambda表达式的使用场景:用以简化接口实现。 关于接口实现,可以有很多种方式来实现。例如:设计接口的实现类、使用匿名内部类。 但是lambda表达式,比这两种方式都简单! lambda表达式毕竟只是⼀个匿名方法。当实现的接…

Lambda表达式的使用场景:用以简化接口实现。

关于接口实现,可以有很多种方式来实现。例如:设计接口的实现类、使用匿名内部类。 但是lambda表达式,比这两种方式都简单!

lambda表达式毕竟只是⼀个匿名方法。当实现的接口中的方法过多或者多少的时候,lambda表达式都是不适用的。lambda表达式,只能实现函数式接口。

什么是函数式接口?

如果说,一个有且仅有一个抽象方法的接口。这样的接口,就是函数式接口。(这个接口可以具有多个非抽象方法)

@FunctionalInterface

这个注解用在接口之前,判断这个接口是否是⼀个函数式接口。 如果是函数式接口,没有任何问题。如果不是函数式接口,则会报错。

冷知识: 

@Override

这个注解解用于表示一个方法是覆盖(override)父类中的方法。这个注解告诉编译器,这个方法应该覆盖了父类中的方法。如果父类中没有这个方法或者子类中的方法与父类中的方法签名不一致,编译器就会报错。

使用@Override注解的好处是,它可以让我们在编译时检查是否正确地覆盖了父类中的方法,避免了运行时错误。同时,它也可以提高代码的可读性和可维护性,因为我们可以清楚地知道这个方法是在覆盖父类中的方法。

@FunctionalInterface
public interface UserService {public void eat(String a,int b);
}

Lambda表达式的语法 

lambda表达式就是⼀个匿名函数。因此在写lambda表达式的时候,不需要关心方法名是什么 !

实际上,我们在写lambda表达式的时候,也不需要关心返回值类型! 

(parameters) -> { statements; }
//这里,参数是函数方法的参数列表,可以是零个或多个。
//箭头"->"将参数列表与表达式或语句块分开。如果表达式是唯一的,那么可以省略大括号。
//如果存在多个语句,那么需要使用大括号来包围它们。

如果接口中定义的方法有返回值,则在实现的时候,注意返回值的返回! 

public class Main {public static void main(String[] args) {//无参UserService userService = (a,b) ->{System.out.println(a+b+"岁了!");};userService.eat("Tom",18);//Tom18岁了!}
}

进阶 

参数的精简 

由于在接口的方法中,已经定义了每⼀个参数的类型是什么。而且在使用lambda表达式实现接口的时候,必须要保证参数的数量和类 型需要和接口中的方法保持⼀致。因此,此时lambda表达式中的参数的类型可以省略不写!

不要有的写类型,有的不写类型!!! 

参数的小括号

如果方法的参数列表中的参数数量 有且只有⼀个,此时,参数列表的小括号是可以省略不写的。

 

        //一个参数Test test = name -> {System.out.println(name+"test");};test.test("小新");

方法体部分的精简

方法体⼤括号的精简。

Test test = name -> System.out.println(name+"test");test.test("小新");

当⼀个方法体中的逻辑,有且只有⼀句的情况下,⼤括号可以省略

return的精简

如果⼀个方法中唯⼀的⼀条语句是⼀个返回语句, 此时在省略掉大括号的同时, 也必须省略掉return

Test test = (a,b) -> a+b;

函数的引用

lambda表达式是为了简化接口的实现的。在lambda表达式中,不应该出现比较复杂的逻辑。如果在lambda表达式中出现了过于复杂的逻辑,会对程序的可读性造成非常大的影响。如果在lambda表达式中需要处理的逻辑比较复杂,⼀般情况会单独的写⼀个方法。在lambda表达式中直接引用这个方法即可。
函数引用:引用⼀个已经存在的方法,使其替代lambda表达式完成接口的实现

静态方法的引用

语法:类::静态方法

注意事项:

  • 在引用的方法后面,不要添加小括号。
  • 引用的这个方法,参数(数量、类型)和返回值,必须要跟接口中定义的⼀致
/*** @author: Mercury* Date: 2022/3/20* Time: 18:17* Description:lambda表达式静态方法引用* Version:1.0*/
public class Main {public static void main(String[] args) {//实现多个参数,一个返回值的接口//对一个静态方法的引用,语法:类::静态方法Test1 test1 = Calculator::calculate;System.out.println(test1.test(4,5));}
}class Calculator{public static int calculate(int a,int b ){// 稍微复杂的逻辑:计算a和b的差值的绝对值if (a > b) {return a - b;}return b - a;}
}interface Test1{int test(int a,int b);
}

非静态方法的引用

语法:对象::非静态方法

注意事项:

  • 在引用的方法后⾯,不要添加小括号。
  • 引用的这个方法, 参数(数量、类型) 和 返回值, 必须要跟接口中定义的⼀致。

/*** @author: Mercury* Date: 2022/3/21* Time: 8:14* Description:lambda表达式对非静态方法的引用* Version:1.0*/
public class test {public static void main(String[] args) {//对非静态方法的引用,需要使用对象来完成Calculator calulator=new Calculator();Test2 test2 = calulator::calculate;System.out.println(test2.calculate(2, 3));}private static class Calculator{public int calculate(int a, int b) {return a > b ? a - b : b - a;}}
}
interface Test2{int calculate(int a,int b);
}

 

http://www.15wanjia.com/news/42926.html

相关文章:

  • 校园网站建设背景凡科建站app
  • 这么做3d网站竞价推广代运营企业
  • 展厅设计制作网站营销策略
  • 做网站的专业叫啥百色seo关键词优化公司
  • 怎么做电影网站服务器上海网站seoseodian
  • 寮步仿做网站seo的搜索排名影响因素有哪些
  • 网站建设要用到的技术有哪些深圳seo秘籍
  • 网站流量用完广东疫情最新通报
  • 网站委托书找谁做seo关键词优化要多少钱
  • 海报模板在线制作免费网站网络营销的策略
  • 淘宝 客要推广网站怎么做竞价托管一般多少钱
  • 科技服务公司网站模版长沙营销型网站建设
  • 北京网站建设设计公司seo收费
  • 正在建设中的网站可算违规淘宝seo具体优化方法
  • 营销网站怎样做山西网页制作
  • 青梦建站小升初最好的补课机构排行榜
  • 企业网站数据库seo怎么推排名
  • 56网站可以做电子相册搜索网站大全
  • wordpress写文章怎么上传图片网站搜索优化排名
  • 同程旅游上海网站排名seo公司哪家好
  • PS的网站网络营销的5种营销方式
  • 泰州市做网站怎么在百度上发布自己的信息
  • 怎么做网页的超链接苏州排名搜索优化
  • bo彩网站制作seo的中文含义
  • 网站布局设计软件国内打开google网页的方法
  • 微信网站建设流程西安网站制作
  • 政府网站集约化平台建设是网站优化排名技巧
  • pc网站手机网站免费网站模板
  • 手机欧美视频网站模板下载 迅雷下载地址搜索关键词排名优化软件
  • 学校网站管理系统世界杯最新排名