java8之方法引用


  1. 方法引用 的使用情景

lambda表达式 要实现的功能, 现有方法已经实现了, 此时可以使用方法引用, 即引用现有方法;

  1. 方法引用 的约束
    被引用的现有方法的参数列表必须与lambda表达式对应的函数式接口的方法的参数列表保持一致, 返回类型也要保持一致;

  2. 方法引用 的语法格式
    使用操作符 ::对象或类的名称方法名 分隔开来;
    主要有3种格式:

    • ObjectName::InstanceMethodName (对象::实例方法)
    • ClassName::StaticMethodName (类::静态方法)
    • ClassName::InstanceMethodName (类::实例方法)

注意: 前两种格式比较好理解, 最后一种格式 ClassName::InstanceMethodName 可以理解为: 传递给该方法引用(即lambda表达式)的第一个参数为该类的实例对象, 其余参数为该实例方法的参数;

例如:


lambda to method reference
  1. 方法引用 的两种特别情况
  • ClassName::new(构造器引用)
    使用构造器引用必须确定构造器的参数列表与对应的函数式接口的方法的参数列表保持一致, 函数式接口的方法的返回值类型构造器所在类的类型;
    例子:

    构造器引用

  • TypeName[]::new(数组引用)
    构造器引用 相似, 例子如下:

    数组引用

你可能感兴趣的:(java8之方法引用)