当不在方法本身中使用此功能方法时,使用函数方法(闭包)和普通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";};
}
最佳答案
第一次调用 Consumer
时会比较慢,因为您的 lambda 表达式将在下面旋转一个类,该类将使用您定义的逻辑实现 Consumer::accept
提供,但这种情况仅在第一次调用时发生一次。
例如,您可以传递 Consumer
,但不能传递方法。好吧,有些 MethodHandles 允许将指针/引用传递给方法。
关于java - 函数式方法与类中的普通方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48410442/