关于Lambda和匿名内部类

先上代码

//g=cache(f)public <T,R> Function<T,R> cache(Function<T,R> f){final Map<T,R> cache=new HashMap<>();Function<T,R> g=t->{if(cache.containsKey(t)){System.out.println("cached t:"+t);return cache.get(t);}System.out.println("not cached t:"+t);R r=f.apply(t);cache.put(t, r);return r;};return g;
//      return new Function<T,R>(){
//          final Map<T,R> cache=new HashMap<>();
//
//          @Override
//          public R apply(T t) {
//              if(cache.containsKey(t)){
//                  System.out.println("cached t:"+t);
//                  return cache.get(t);
//              }
//              R r=f.apply(t);
//              System.out.println("not cached t:"+t);
//              cache.put(t, r);
//              return r;
//          }
//          
//      };}

这是网上的一篇文章后面留的习作,题目是传入一个函数f,返回一个等效的cache版本函数g。题目本身没什么,只是在我实现的过程中对两种方法有一些感想,列在下面以作备忘。

  • 要清楚自由变量和限定变量的区别
  • 仅从效果来看lambda写起来简洁,但不如内部类灵活
  • 匿名内部类编译后会生成一个顶层类,编译器自动生成的构造函数里,第一个参数必定是包装类的引用,其余的参数依次是捕获的自由变量。
  • lambda不会生成另外的类(没有发现class文件)
  • lambda对应invokedaynamic指令

一些扩展阅读的博客文章
通过字节码分析JDK8中Lambda表达式编译及执行机制
java8 lambda学习笔记之编译与运行过程
Java8学习笔记(4) -- Lambda表达式实现方式
Lambda表达式

转载于:https://www.cnblogs.com/batz/p/memo_java_lambda_anonymous-inner-class.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/455212.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

H26L encoder.cfg参数分析

H264 encoder.cfg参数分析 收藏 (1) 文件操作参数:#Files InputFile "silent.yuv" #输入序列,YUV 4:2:0 StartFrame 0 # 从视频流的第几帧开始编码 FramesToBeEncoded 30 #编码图象帧数,指明了除去 B帧后将要被编码的帧数(应该再实验一下&#x…

django-ckeditor表情包修改

一、版本 Django1.11django-ckeditor5.2.2 二、关键步骤 1.删除旧的ckeditor静态文件 所在目录&#xff1a;项目目录下的static文件夹下的ckditor文件夹 rm ckeditor -rf 原因&#xff1a;在安装ckeditor后需要执行collectstatic命令&#xff0c;这个过程中的查找静态文件会去…

python中最难的是什么_python什么的最难了

学的人很少的,如果你没有学过编程,建议学c语言.因为python中文资料很少的.你可以先了解一下phthonpython的历史python的创始人为guido van rossum。1989年圣诞节期间&#xff0c;在阿姆斯特丹&#xff0c;guido为了打发圣诞节的无趣&#xff0c;决心开发一个新的脚本解释程序&a…

Python3生成脚本实现重置键盘键位

个人博客点这里 #!/usr/bin/env python # -*- coding:utf-8 -*- # Created by 秋叶夏风# 本模块的功能:<重置键盘键位>import sys import ossave_format "bat" # 这个值可以修改&#xff0c;有两个选项(bat和reg)&#xff0c;可选择生成bat批处理文件或者re…

《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一2.2.2 如何读入文本输入

2.2.2 如何读入文本输入 最简单的处理任意文本的方式就是使用在卷Ⅰ中我们广泛使用的Scanner类。我们可以从任何输入流中构建Scanner对象。或者&#xff0c;我们也可以将短小的文本文件像下面这样读入到一个字符串中&#xff1a; 在早期的Java版本中&#xff0c;处理文本输入的…

leetcode add Two Numbers

部分 conditional operators ?:写的statements 在有的编译器下能通过&#xff0c;有的可能通不过 base operand of -> has non-pointer type ListNode转载于:https://www.cnblogs.com/liyongguo/p/7152365.html

amap不同样式marker点_想出一手漂亮的图,CAD打印样式表你必须会!

好课推荐&#xff1a;1.CAD2014&#xff1a;点击查看2.室内CAD&#xff1a;点击查看3.CAD2019&#xff1a;点击查看4.CAD2018&#xff1a;点击查看5.【bim】revit&#xff1a;点击查看6.室内手绘&#xff1a;点击查看7.CAD三维&#xff1a;点击查看8.全屋定制&#xff1a;点击查…

JM8.5中的7种宏块模式问题

JM8.5中的7种宏块模式问题 收藏 Outline: 1、 CFG文件中有关可变尺寸宏块模式的相关选项2、 7种宏块模式对应的数值常量3、 7种宏块模式被分成宏块和亚宏块4、 如何对宏块和亚宏块的运动估计&#xff0c;采用一个共同的函数来处理5、 遗留问题1、CFG文件中有关可变尺寸宏块…

python高级编程技巧

个人博客点这里 如何在列表,字典,集合中根据条件筛选数据 方法1:通过迭代来进行判断筛选 解决方案 函数式编程: 如何统计序列中元素的出现频度 解决方案:使用collections.Counter对象 将序列传入Counter的构造器,得到Counter对象是元素频度的字典 Counter.most_common(n)…

2016年安全身份识别主流趋势

安全身份识别解决方案商HID Global通过从不同行业市场的重要客户那里所获得的深刻洞察&#xff0c;以及公司最新解决方案在前瞻性合作伙伴和全球各地的终端用户中进行的试点项目与正式部署情况&#xff0c;确定了2016年最值得业界关注的安全趋势。HID Global 广阔的行业视角&am…

列出一个目录中所有文件及大小

package com.test.tree;import java.io.File;/*** 列出一个目录中所有的文件和他们的大小* author wyl**/ public class FileList {public void list(File f){ //文件根目录&#xff0c;深度为0list(f,0);}/*** * param f* param depth 为了显示文件的层级形式*/public void li…

多媒体音频格式解析WMA WAV OGG AAC APE FLAC

无论是MP3还是MP4&#xff0c;甚至手机和多媒体DC&#xff0c;产品所支持的各种格式往往让人眼花缭乱。特别是对于刚上手的新手玩家来说&#xff0c;各种格式都有哪些特性&#xff0c;在实际 使用当中有多少格式实用或者必须&#xff0c;其实有很多方面需要我们来系统的了解。这…

数据分析之pandas笔记

Pandas 一个用于表示表格类型的内容 课时4&#xff1a;jupyter21 分22 秒课时5&#xff1a;pandas的内容24 分31 秒课时6&#xff1a;series内容38 分19 秒课时7&#xff1a;dataframe25 分50 秒 # 载入pandas库 import pandas as pd import numpy as nps pd.Series([2,4,6…

Apache日志记录组件Log4j出现反序列化漏洞 黑客可以执行任意代码 所有2.x版本均受影响...

开源的东西用的人多了&#xff0c;自然漏洞就多。Apache用于日志记录的组件Log4j使用非常灵活&#xff0c;在相当多的开源项目中都有使用&#xff0c;此次漏洞影响所有Apache Log4j 2.*系列版本&#xff1a; Apache Log4j 2.0-alpha1 – Apache Log4j 2.8.1&#xff0c;使用Jav…

react接收后端文件_React获取Java后台文件流并下载Excel文件流程解析

记录使用blob对象接收java后台文件流并下载为xlsx格式的详细过程&#xff0c;关键部分代码如下。首先在java后台中设置response中的参数&#xff1a;public void exportExcel(HttpServletResponse response, String fileName, String sheetName,List titleRow, List> dataRo…

Python常见的170道面试题全解析答案

个人博客点这里 语言特性 1. 谈谈对 Python 和其他语言的区别 答&#xff1a;Python 是一门语法简洁优美,功能强大无比,应用领域非常广泛,具有强大完备的第三方库&#xff0c;他是一门强类型的可移植、可扩展&#xff0c;可嵌入的解释型编程语言&#xff0c;属于动态语言。 …

WMA文件信息格式分析及代码

WMA文件信息格式分析及代码 收藏 ASF文件和WMA文件格式差不多。具体请看下面我写的代码。文件分析根据mplayer其中的asfhead.c提供的代码进行分析。mplayer只解除出了标准的wma头信息&#xff0c;其扩展信息并没有解析出来。代码如下. /*每一个WMA文件&#xff0c;它的头16个字…

[No0000101]JavaScript-基础课程1

JavaScript 是一种轻量级的编程语言&#xff0c;很容易学习&#xff0c;同时也是一种被广泛用于客户端Web开发的脚本语言。通过本课程学习&#xff0c;我们可以了解到JavaScript的基本语法知识&#xff0c;以及怎样使用它去创建简单的游戏和应用。 1.获取字符的长度 "youN…

研究人员发现Office Word 0Day攻击 这个漏洞绕过了word宏安全设置 绿盟科技、McAfee及FireEye发出警告...

这次的0Day漏洞确实很厉害&#xff0c;以往攻击者诱使用户点击Word文档&#xff0c;由于其中包含了恶意脚本&#xff0c;大多数需要用户启用了宏。但这次的漏洞不是&#xff0c;受害者无需启用宏&#xff0c;也会中招&#xff0c;而且漏洞覆盖Windows所有版本&#xff08;包括W…

秀米svg点击显示另一张图_SVG的雷,你踩过了没?

原标题&#xff1a;SVG的雷&#xff0c;你踩过了没&#xff1f;随着SVG互动布局的出现和在H5的应用越来越多&#xff0c;不少小伙伴们会想在秀米里上传自己制作的SVG图形。秀米的首页顶部教程收录了一篇关于SVG图形的讲解&#xff1a;「秀米的SVG图片」&#xff0c;里面主要介绍…