Mi sono imbattuto in un codice che sto faticando a capire nonostante un po 'di lettura. C'è una chiamata a un metodo che accetta due argomenti, uno dei quali è un Runnable. Piuttosto che passare in un oggetto Runnable sebbene ci sia un lambda.Come Runnable viene creato da Java8 lambda
Ad esempio:
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(); } } } }
Quindi la mia domanda è: si può spiegare come un Runnable è creato dal lambda, e anche si prega di qualcuno potrebbe spiegare la sintassi () -> {}. In particolare, cosa significano le parentesi()?
grazie.
Tonnellate di guide on-line per Questo. '() -> {}' Il '()' rappresenta i parametri formali per il metodo dichiarato nell'interfaccia funzionale. '{}' è il corpo per quel metodo. '->' separa i parametri dal corpo. –