在Java 8中使用功能接口

Nar*_*hai 6 java lambda closures java-8

这是Java 8::(双冒号)运算符的后续问题,其中Java允许您使用::运算符引用方法.

是否可以提供我创建的一些自定义功能接口并将其与::运营商一起使用?怎么做?

Hol*_*ger 11

"是否有可能提供我创建的一些自定义功能接口并将其与::运营商一起使用?怎么做?"

这是可能的,它就像你想象的那样简单:只需用一种方法创建一个界面.你甚至不需要@FunctionalInterface注释; 这个注释只是记录你的意图,并有助于在编译时检测错误,类似于@Override.

所以也许你已经在Java 8之前的项目中创建了这样的接口......

class Foo {
    // nothing new:
    public interface FooFactory {
        Foo createFoo();
    }
    // new in Java 8:
    public static final FooFactory DEFAULT_FACTORY = Foo::new;
}
Run Code Online (Sandbox Code Playgroud)