个人简介

Echo Blog


江湖无名 安心练剑
  • Java8-10-行为参数化
    行为参数化 在软件开发中,一个众所周知的问题就是无论你做什么,用户的需求总会改变。 举个栗子,假设要做一个帮助农场主理解库存的应用。 一开始,农场主可能想有一个在所有库存中找出所有绿色苹果的功能。 但是第二天他可能会告诉你他还想要找到所有重量大于150g的苹果。 两天后,他可能又提出找到所有绿色的并且重量大于150g的苹果。 在面对这些相似的新功能时,我们都想尽可能的减少开发量。...
    2019-02-27 07:48:49 | Java
  • Java8-09-functional 函数式编程
    Functional Programming in Java Lambda expressions are lightweight, highly concise anonymous methods backed by functional interfaces in Java 8. You can use them to leap forward into a whole new wo...
    2019-02-27 07:48:49 | Java
  • Java8-08-java8 datetime 日期类
    Java SE 8 Date and Time 为什么需要? Java开发人员的一个长期困扰是对普通开发人员的日期和时间用例的支持不足。 例如,现有的类(例如java.util.Date 和 SimpleDateFormatter)并不是线程安全的,这给用户带来了潜在的并发问题——这不是一般开发人员在编写日期处理代码时所期望处理的问题。 一些日期和时间类也显示出相当糟糕的API设计。...
    2019-02-27 07:48:49 | Java
  • Java8-07-ChronoUnit 日期枚举类
    ChronoUnit 一组标准的日期时间单位。 这组单元提供基于单元的访问来操纵日期,时间或日期时间。 可以通过实现TemporalUnit来扩展标准单元集。 这些单元适用于多个日历系统。 例如,大多数非ISO日历系统定义年,月和日的单位,只是略有不同的规则。 每个单元的文档说明了它的运作方式。 这是一个最终的、不可变的和线程安全的枚举。 入门例子 plus() 测试 @Te...
    2019-02-27 07:48:49 | Java
  • java8-06-lambda 复合使用
    复合Lambda 表达式的有用方法 Java8的好几个函数式接口都有为方便而设计的方法。具体而言,许多函数式接口,比如用于传递Lambda表达式的Comparator、Function和Predicate都提供了允许你进行复合的方法。 这是什么意思呢? 在实践中,这意味着你可以把多个简单的Lambda复合成为复杂的表达式。比如,你可以让两个谓词之间做一个or操作,组合成为了一个更大的谓...
    2019-02-27 07:48:49 | Java
  • java8-05-lambda 方法引用
    方法引用 方法引用可以看作仅仅调用特定方法方法的 lambda 的一种快捷的方式。 显示的指定方法的名称,可读性会更好。 代码示例 /** * 方法引用 */ @Test public void functionRefTest() { Apple one = new Apple(20); Apple two = new Apple(10); List<...
    2019-02-27 07:48:49 | Java
  • java8-04-lambda 类型推断
    类型检查 Lambda 的类型是从 Lambda 的上下文推断出来的。 上下文中 Lambda 表达式需要的类型称为 目标类型。 图示如下 同样的 lambda,不同的函数接口 /** * 相同的 lambda 表达式,但是不同的函数接口 * 只要他们的抽象方法签名可以兼容。 */ @Test public void sameLambdaDiffFunctional() { ...
    2019-02-27 07:48:49 | Java
  • java8-03-lambda 内置函数
    Predicate Predicate 定义了一个 test() 方法,接受泛型 T 的对象,并且返回一个 boolean 值。 定义 /** * 过滤器: 返回满足条件的列表 * @param list * @param predicate * @param <T> * @return */ pr...
    2019-02-27 07:48:49 | Java