Java8学习笔记(二)

Optional

解决问题;NullPointException
value-based classes

    1. final的 and immutable的
    1. 有equals,hashcode ,tostring 基于实例本身的状态计算出来的。
    1. 基于equals方法,而不会基于 ==;
    1. 不能在两个实例中使用==,hashcode,和实例锁。
    1. 没有可访问的构造方法。通过工厂创建实例。
    1. 当equals方法返回true,两个实例可以互相替换。
  • ofNullable

  • empty

  • of

使用ifPresent()/orElse()/orElseGet()/map()方法。

方法引用

method reference
lambda表达式的语法糖
有局限性的–》只有在恰好有这个方法时才能使用方法引用的形式。
语法:

  1. 类名::静态方法名
  2. 引用名(对象名)::实例方法名
  3. 类名::实力方法名 Lambda表达式的第一个参数作为调用方。
  4. 构造方法引用 类名::new 会根据上下文推断new调用的是哪个构造方法。

默认方法

为什么要有默认方法?

  1. 向后兼容,为了规避接口的默认实现且不修改原有接口的原有实现。

接口中可以为抽象方法设置默认方法实现。
同时实现了不同接口的同名方法,要重写。
a接口,b接口,两个接口有同名方法时,当c类继承了a接口的实现类的同时实现了b接口,则调用a接口的实现类中重写的同名方法。

猜你喜欢

转载自blog.csdn.net/weixin_39781526/article/details/85059025