www.zhblog.net

Java 8 中函数引用

说明

内容来自《Java In Action》一书


方法引用主要有三类

(1) 指向静态方法的方法引用(例如Integer的parseInt方法, 写作Integer::parseInt)。

(2) 指 向 任 意 类 型 实 例 方 法 的 方 法 引 用 ( 例 如 String 的 length 方 法 , 写 作String::length)。

(3) 指向现有对象的实例方法的方法引用(假设你有一个局部变量expensiveTransaction用于存放Transaction类型的对象,它支持实例方法getValue,那么你就可以写expensiveTransaction::getValue)。


D5F04B08-59C6-42e4-93F0-7D8EFCAF4FAA.png


构造函数引用

你已经看到了如何将有零个、一个、两个参数的构造函数转变为构造函数引用。那要怎么 样才能对具有三个参数的构造函数,比如Color(int, int, int), 使用构造函数引用呢?

答案:你看,构造函数引用的语法是ClassName::new,那么在这个例子里面就是Color::new。但是你需要与构造函数引用的签名匹配的函数式接口。但是语言本身并没有提供这样的函数式接口,你可以自己创建一个:

public interface TriFunction<T, U, V, R>{
    R apply(T t, U u, V v);
}


现在你可以像下面这样使用构造函数引用了:

TriFunction<Integer, Integer, Integer, Color> colorFactory = Color::new;


 

展开阅读全文

评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 心情