函数方法与类中的常规方法

时间:2018-01-23 20:41:22

标签: java java-8

在方法本身中不使用此功能方法时,使用函数方法(闭包)普通java方法有什么区别。任何其他好处(例如更快的访问速度)?

版本1:

public class Test{

    // does not need to be consumer, can also be 
    // own function (see version 3)
    public static final Consumer<User> addUser = s -> {
        // the same logic as in version 2
    };
}

版本2:

public class Test{
    public static final void addUser(User u) {
        // the same logic as in version 1
    }
}

版本3:

public class Test{

Function<User, String> addUser= (User e)-> {/* the same logic as in version 2 */;return "saved";};
}

1 个答案:

答案 0 :(得分:4)

第一次调用Consumer时,它会慢一些,因为你的lambda表达式将在下面旋转一个类,它将使用你提供的逻辑实现Consumer::accept,但是只发生一次第一次打电话

例如,您可以传递Consumer,但您不能使用方法。好吧,有一些MethodHandles允许将指针/引用传递给方法。