java8之方法引用
2018-03-05 本文已影响0人
dimdark
-
方法引用
的使用情景
lambda表达式 要实现的功能, 现有方法已经实现了, 此时可以使用
方法引用
, 即引用现有方法;
-
方法引用
的约束
被引用的现有方法的参数列表必须与lambda表达式对应的函数式接口的方法的参数列表保持一致, 返回类型也要保持一致; -
方法引用
的语法格式
使用操作符::
将 对象或类的名称 与 方法名 分隔开来;
主要有3种格式:-
ObjectName::InstanceMethodName
(对象::实例方法
) -
ClassName::StaticMethodName
(类::静态方法
) -
ClassName::InstanceMethodName
(类::实例方法
)
-
注意: 前两种格式比较好理解, 最后一种格式
ClassName::InstanceMethodName
可以理解为: 传递给该方法引用(即lambda表达式)的第一个参数为该类的实例对象, 其余参数为该实例方法的参数;例如:
lambda to method reference
-
方法引用
的两种特别情况
-
构造器引用ClassName::new(构造器引用)
使用构造器引用
必须确定构造器的参数列表与对应的函数式接口的方法的参数列表保持一致, 函数式接口的方法的返回值类型是构造器所在类的类型;
例子:
-
数组引用TypeName[]::new(数组引用)
与构造器引用
相似, 例子如下: