在方法本身中不使用此功能方法时,使用函数方法(闭包)和普通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";};
}
答案 0 :(得分:4)
第一次调用Consumer
时,它会慢一些,因为你的lambda表达式将在下面旋转一个类,它将使用你提供的逻辑实现Consumer::accept
,但是只发生一次第一次打电话
例如,您可以传递Consumer
,但您不能使用方法。好吧,有一些MethodHandles允许将指针/引用传递给方法。