Java 8:是否可以为变量分配方法引用?

我用Google搜索了这个问题的答案但找不到答案。

在Java 8中,我知道这是可能的:

// someMethod is defined as: someMethod(AFunctionalInterface i) someMethod(someObject::someOtherMethod); 

问题是:是否可以执行以下操作

 AFunctionalInterface i = anObject::SomeMethod; 

另外,是否可以将lambda分配给变量并传递给它,就像这样?

Printer f = () -> System.out.println(..); methodThatTakesPrinter(f);

是的,根据JLS中引用的一个例子,它是可能的:

 Task t = () -> System.out.println("hi"); Runnable r = t::invoke; 

此外,还说明如下:

如果T是函数接口类型(第9.8节)并且表达式与地面目标的函数类型一致,则方法引用表达式在赋值上下文 [强调我的],调用上下文或具有目标类型T的强制转换上下文中是兼容的类型来源于T.