Я столкнулся с некоторым кодом, который я пытаюсь понять, несмотря на чтение. Существует вызов метода, который принимает два аргумента, один из которых является Runnable. Вместо того, чтобы проходить через объект Runnable, хотя есть лямбда.
Например:
public class LambdaTest { private final Lock lock = new ReentrantLock(); @Test public void createRunnableFromLambda() { Locker.runLocked(lock, () -> { System.out.println("hello world"); }); } public static class Locker { public static void runLocked(Lock lock, Runnable block) { lock.lock(); try { block.run(); } finally { lock.unlock(); } } } }
Поэтому мой вопрос: можете ли вы объяснить, как Runnable создается из лямбда, а также, пожалуйста, кто-нибудь может объяснить синтаксис () → {}. В частности, что означают скобки()?
Благодарю.