在Function里面看到一个很奇怪的代码

static <T> Function<T, T> identity() {
return t -> t;
}

手动写了几个代码尝试了一下,t->t就是返回一个空的实现

    interface F<T>
{
T apply(T t); static <T> F<T> identity()
{
return t -> {
System.out.println(t);
return t;
};
}
static <T> F<T> identity2()
{
return t->t;
}
}
F<String> f = new F<String>()
{
@Override
public String apply(String t)
{
System.out.println(t);
return t;
}
};
f.apply("asdasdsa");
f = F.identity();
f.apply("zzzzzz");
//empty apply body
f = t -> t;
f.apply("kkkkkkkkk"); f = F.identity2();
f.apply("kkkkkkkkk"); f = new F<String>()
{
        //t->t
@Override
public String apply(String t)
{
return null;
}
};
f.apply("kkkkkkkkk");

java8-函数编程的更多相关文章

  1. Java源码阅读ArrayList

    1简介 public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAc ...

  2. Java迭代器原理

    1迭代器模式 迭代器是一种设计模式,这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示. 一般实现方式如下:(来自)

  3. java8与函数编程资料

    Functional programming Java 8 idioms Java SE 8's new Streams API Spring 技术布道师 Josh Long 来华:用 Show 代码 ...

  4. Java8之旅(七) - 函数式备忘录模式优化递归

    前言 在上一篇开始Java8之旅(六) -- 使用lambda实现Java的尾递归中,我们利用了函数的懒加载机制实现了栈帧的复用,成功的实现了Java版本的尾递归,然而尾递归的使用有一个重要的条件就是 ...

  5. Java8自定义函数式编程接口和便捷的引用类的构造器及方法

    什么是函数编程接口? 约束:抽象方法有且只有一个,即不能有多个抽象方法,在接口中覆写Object类中的public方法(如equal),不算是函数式接口的方法. 被@FunctionalInterfa ...

  6. 第十七章 java8特性

    17.java8中Lambda表达式与Stream API的使用 17.1 Lambda 表达式(Lambda Expressions) 1课时 17.2 函数式(Functional)接口 1课时 ...

  7. Java8函数式编程探秘

    引子 将行为作为数据传递 怎样在一行代码里同时计算一个列表的和.最大值.最小值.平均值.元素个数.奇偶分组.指数.排序呢? 答案是思维反转!将行为作为数据传递. 文艺青年的代码如下所示: public ...

  8. java8新特性(二)_lambda表达式

    最近一直找java8相关新特性的文章,发现都太没有一个连贯性,毕竟大家写博客肯定都有自己的侧重点,这里找到一本书,专门介绍java8新特性的,感觉大家可以看看<写给大忙人看的JavaSE8> ...

  9. java8 使用 lamda 表达式 完成 map reduce

    java8支持了函数编程,可以让java代码更简洁和易读. 传统 for 循环方式: List<String> list = Arrays.asList("C",&qu ...

  10. Java8函数之旅 (七) - 函数式备忘录模式优化递归

    前言 在上一篇开始Java8之旅(六) -- 使用lambda实现Java的尾递归中,我们利用了函数的懒加载机制实现了栈帧的复用,成功的实现了Java版本的尾递归,然而尾递归的使用有一个重要的条件就是 ...

随机推荐

  1. mysql安装杂记

    绿色版安装 先进入bin目录下初始化 命令:mysqld -initialize-insecure    mysqld --initialize --user=mysql --console    初 ...

  2. hive最全学习线路和实践练习

    非原创,源自:https://www.cnblogs.com/snowbook/p/5723767.html hive被大多数企业使用,学习它,利于自己掌握企业所使用的技术,这里从安装使用到概念.原理 ...

  3. Ubuntu使用总结一

    一.安装 Ubuntu桌面版与服务器版的不同之处桌面版面向个人电脑使用者,可以进行文字处理.网页浏览.多媒体播放和玩游戏.本质上说,这是一 个为普通用户所定制的多用途操作系统.另一方面,服务器版旨在充 ...

  4. Redis事务和实现秒杀功能的实现

    今天带着学生学习了Redis的事务功能,Redis的事务与传统的关系型数据库(如MySQL)有所不同,Redis的事务不能回滚. Redis中使用multi.exec.discard.watch.un ...

  5. 前端的UI框架

    iView 框架 使用场景 iView 主要适合大中型中后台产品,比如某产品的运营平台.数据监控平台.管理平台等,从工程配置.到样式布局,甚至后面规划的业务套件,是一整套的解决方案,所以它可能不太适合 ...

  6. LibreOffice字体问题解决;从window复制到Ubuntu

    拷贝或下载windows系统的Fonts字体集到对应的linux系统下;以ubuntu16.04系统为例. 1.进入windows系统,到C:WindowsFonts目录,复制拷贝自己需要的字体(也可 ...

  7. 20164318 毛瀚逸 Exp1 PC平台逆向破解

    一.逆向及Bof基础实践说明 1.1实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. 手工修 ...

  8. Linux安装JDK.8

    E&T: CentOS_7.4 64位; jdk-8u191-linux-x64; Xftp5; Xshell5; P1.下载Linux环境下的jdk1.8 下载链接: https://www ...

  9. CF999E Reachability from the Capital来自首都的可达性

    题目大意: 有n个节点m条边,边都是单向的,请你添加最少的边使得起点s到其他与其他每一个点之间都能互相到达 这题一看就是一个缩点啊 其实对于原有的m条边相连的一些点,如果之前他们已经形成了强连通分量( ...

  10. python,验证码生成

    <pre>import string import random from PIL import Image from PIL import ImageDraw from PIL impo ...