lambda表达式 拉姆达

学习这个之前,需要明确

有一种接口叫做函数式接口,只允许接口里面只有一个函数

可以使用

@FunctionalInterface进行注解

如果这个接口里面定义了两个方法,就会报错,当然,这种接口主要是针对lambda表达式使用

函数式接口允许:

1.定义默认方法

2.定义静态方法

3.定义Object里的public方法

明确了这一点,然后再去学习lambda表达式,下面这个是自己在学习发送邮件的时候,看到的,接口需要自己重新实现prepare方法,因为是一个void方法,传入参数类型是可以不指定的,所以,就可以使用lambda表达式进行接口实例化。

MimeMessagePreparator messagePreparator = mimeMessage -> {MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage);messageHelper.setFrom(sender,senderName);messageHelper.setTo(receiver);messageHelper.setSubject(subject);messageHelper.setText(message);};MimeMessagePreparator mimeMessagePreparator = new MimeMessagePreparator() {@Overridepublic void prepare(MimeMessage mimeMessage) throws Exception {MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage);messageHelper.setFrom(sender,senderName);messageHelper.setTo(receiver);messageHelper.setSubject(subject);messageHelper.setText(message);}};

lambda表达式学会以后,确实发现是比较简洁的写法,因为对于接口的实例化变得更加的简洁,而且,最重要的是,其他的问题不大,对于comparable接口的实例化就会更加的清晰

刚写的例子,会少好多行代码

Collections.sort(a,new Comparator<String>() {@Overridepublic int compare(String o1, String o2) {// TODO Auto-generated method stubreturn -1;}});Collections.sort(a, (o1,o2) -> {return -1;});

然后,只是需要注意一点的是,对于直接实例化,是可以指定

package com.gsy;public class EmailProperty {public static void main(String args[]) {new EmailProperty();}interface qqq{int a(int a);}interface ppp{int a(int b);}class test{int a;int b;int testa(int a,int b,qqq qqq){return 1;}int testa(int a,int b,ppp ppp){return 1;}}public EmailProperty() {test aaa = new test();aaa.a = 1;aaa.b = 2;aaa.testa(1, 2,new ppp() {@Overridepublic int a(int b) {// TODO Auto-generated method stubreturn 0;}});aaa.testa(1, 2,  (qqq) i ->  {return -1;});}
}

by the way 关于指定lambda表达式实例化是Stack Overflow上外国友人回答的- -,百度百度不到- -

https://stackoverflow.com/questions/55970005/how-to-specify-lambda-expression-in-java-when-i-have-two-same-name-method

lambda表达式 拉姆达相关推荐

  1. 拉姆达表达式相关知识

    拉姆达表达式 拉姆达表达式是创建匿名函数的另一种方法.因此,拉姆达表达式可以赋值给委托.虽然主要在操作LINQ中使用拉姆达表        达式,但是这种表达式也适用于委托和事件. 拉姆达表达式运算符 ...

  2. 匿名函数 和 拉姆达表达式

    匿名函数 匿名方法是创建与特定委托实例相关联的未命名代码块的一种方法.可以通过在代码块后面跟上delegate关键字来创建匿名方法. delegate void print();delegate st ...

  3. java8新特性(拉姆达表达式lambda)

    一.函数式接口 函数式接口(functional interface 也叫功能性接口,其实是同一个东西).简单来说,函数式接口是只包含一个方法的接口.比如Java标准库中的java.lang.Runn ...

  4. java1.8 Lambda拉姆达表达式深入探究

    当我们遇到下面情况时: SingleObj.getInstance().setRunnable(new Runnable() {@Overridepublic void run() {} }); 编译 ...

  5. 拉姆达表达式(Lambda Expressions)

    让我们先看一个简单的拉姆达表达式: x=>x/2 这个表达式的意思是:x为参数,对x进行相应的操作后的结果作为返回值. 通过这个拉姆达表达式,我们可以看到: 这个表达式没有任何类型信息,但这并不 ...

  6. java拉姆达表达式事例,Java Lambda表达式详解和实例

    简介 Lambda表达式是Java SE 8中一个重要的新特性.lambda表达式允许你通过表达式来代替功能接口. lambda表达式就和方法一样,它提供了一个正常的参数列表和一个使用这些参数的主体( ...

  7. java 获取集合对象中某个属性不为空的数据集合 lambda获取【拉姆达表达式 】

    首先我创建了一个测试的类. 这个随意哈. public class Person {private String name;private String age;private Integer id; ...

  8. 关于常用的Lambda(拉姆达)表达式

    ISO C++ 11 标准的一大亮点是引入Lambda表达式.基本语法如下: [capture list] (parameter list) ->return type { function b ...

  9. C#拉姆达(=)表达式

    前言: 之前小猪曾经分享过自己对C#委托的一点理解 其实在使用委托的过程中我们会大量的使用拉姆达(=>)表达式 介绍: "Lambda表达式"是一个匿名函数,是一种高效的类似 ...

最新文章

  1. Java数字包装类基本程序,Java基本数据类型包装类
  2. Redis允许远程访问
  3. ebay注册流程_跨境电商平台eBay企业入驻流程
  4. c# 从一组数中随机抽取一定个数_Python随机模块22个函数详解
  5. input禁止鼠标滚轮改变数值
  6. 【kafka】kafka Replica无法从leader同步消息
  7. [CF280D]k-Maximum Subsequence Sum
  8. 做手好菜,骗个好女孩做女朋友(一)
  9. 数据库——mysql如何获取当前时间---https://www.cnblogs.com/Chenshuai7/p/5136469.html
  10. js正则表达式校验手机号码和电话号码
  11. 赠人玫瑰,手有余香,分享五款黑科技软件
  12. 给初学者:用VB写外挂 ———— 实战三:泰坦之旅V1.08 十项属性修改器——另一种无输入焦点时响应按键的方法
  13. Kubernetes kubeadm 证书到期,更新证书
  14. 令人心动的HTTP知识点大全
  15. 常用在线英汉、英英词典
  16. python中write什么意思_python file write () 方法概括及作用分析(实例)
  17. c语言程序设计 大学考试题库,广东工业大学《C语言程序设计》考试复习重点题库.pdf...
  18. 【一】软件测试的起源与发展介绍
  19. IOS7 隐藏状态栏 (电池栏)
  20. 聚合支付:将支付宝、微信、qq钱包三码收款码合而为一

热门文章

  1. 极其简单的 使用IDEA 中 实现springboot 热部署 (spring boot devtools版)
  2. 在GitHub Students Developer Pack申请DigitalOcean的50刀优惠码
  3. 微电子跨专业考计算机,2018考研:盲目跨专业可能遇到的四个问题
  4. LaTex:实现在Springer可以使用bibtex自动生成引用文献,而不用写Bibitem
  5. MongoDB迁移方案
  6. CAD图纸无法复制粘贴该怎么办?
  7. mysql火焰图_Linux 性能分析利器 -火焰图 flame graph
  8. PyPi、pypi有啥作用?PyPi和pip有何渊源
  9. 现代物流仓储自动化实验系统
  10. 2023年华为认证HCIA云计算题库(H13-511)