在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. day09 函数学习

    内容详细 1.函数 1.1.面向过程: 可读性差/可重用差 1.2.面向对象:

  2. PTA——找鞍点

    PTA 7-56 找鞍点 #include<stdio.h> #define N 6 int main() { ; scanf("%d",&n); int a[ ...

  3. 安装grub到U盘分区,实现多系统引导

    目录 1.分区工具及分区类型 1.1 显示分区表和分区信息 1.1.1 fdisk -l 1.1.2 gdisk -l 1.1.3 parted -l 1.2 常见分区类型 1.3 分区样例 1.3. ...

  4. 使用CUPS打印服务

    目录 1. 测试环境 2 2. CUPS介绍 3 2.1 CUPS的配置文件 3 2.1.1 cupsd.conf 3 2.1.2 cups-files.conf 3 2.1.3 printcap 3 ...

  5. unity 面试题(答案)

    一.什么是渲染管道?是指在显示器上为了显示出图像而经过的一系列必要操作.渲染管道中的很多步骤,都要将几何物体从一个坐标系中变换到另一个坐标系中去.主要步骤有:本地坐标->视图坐标->背面裁 ...

  6. 【模板】字符串匹配的三种做法(Hash、KMP、STL)

    题目描述 如题,给出两个字符串s1和s2,其中s2为s1的子串,求出s2在s1中所有出现的位置. 输入输出格式 输入格式: 第一行为一个字符串,即为s1 第二行为一个字符串,即为s2 输出格式: 1行 ...

  7. Defender 防卫者

    发售年份 1980 平台 街机 开发商 Williams 类型 射击 https://www.youtube.com/watch?v=gss3lxeqCok

  8. 在VS2013、VS2015下如何配置DirectX SDK的开发环境

    在Visual Studio 2013下配置DirectX SDK可以进行基于DirectX的3D大型应用程序的开发.如果在开发DirectX程序时不配置其开发环境会引起编译器报错, 下面就与大家分享 ...

  9. shibie

    var mStream: TMemoryStream; vcode: ..] of AnsiChar; buffer: array of AnsiChar; begin mStream := TMem ...

  10. 廖雪峰Java8JUnit单元测试-2使用JUnit-2异常测试

    1.异常测试 对可能抛出的异常进行测试: 异常本身是方法签名的一部分: * public static int parseInt(String s) throws NumberFormatExcept ...