Wie Runnable aus Java8 Lambda [Duplikat] erstellt wird

9
___ tag123java ___ Java (nicht zu verwechseln mit JavaScript oder JScript oder JS) ist eine universelle objektorientierte Programmiersprache, die für die Verwendung in Verbindung mit der Java Virtual Machine (JVM) entwickelt wurde. "Java-Plattform" ist der Name für ein Computersystem, auf dem Tools zum Entwickeln und Ausführen von Java-Programmen installiert sind. Verwenden Sie dieses Tag für Fragen, die sich auf die Java-Programmiersprache oder Java-Plattform-Tools beziehen. ___ tag123lambda ___ Anonyme Funktionen oder Closures in Programmiersprachen wie Lisp, C #, C ++, Lua, Python, Ruby, Javascript oder Java. (Auch Lambda-Ausdruck.) ___ tag123java8 ___ Verwenden Sie dieses Tag für spezifische Fragen zu Java 8, Version 8 (interne Nummer 1.8) der Java-Plattform, die am 18. März 2014 veröffentlicht wurde. In den meisten Fällen sollten Sie auch das Java-Tag angeben. ___ answer34027101 ___

Ein Lambda kann überall dort eingesetzt werden, wo eine funktionale Schnittstelle benötigt wird. Eine funktionale Schnittstelle ist eine beliebige Schnittstelle mit einer einzigen abstrakten Methode.

Die in diesem Fall verwendete Lambda-Syntax ist %code% . Die Klammer kann bei einem einzelnen Argument weggelassen werden, und die Klammern können im Falle eines einzelnen Befehls oder Ausdrucks weggelassen werden.

Mit anderen Worten, %code% entspricht * zu

%Vor%

(Ich bin mir ziemlich sicher, dass es nicht Bytecode-äquivalent ist, sondern hinsichtlich der Funktionalität äquivalent ist)

    
___ qstnhdr ___ Wie Runnable aus Java8 Lambda [Duplikat] erstellt wird ___
robjwilkins 01.12.2015, 17:54
quelle

1 Antwort

25

Ein Lambda kann überall dort eingesetzt werden, wo eine funktionale Schnittstelle benötigt wird. Eine funktionale Schnittstelle ist eine beliebige Schnittstelle mit einer einzigen abstrakten Methode.

Die in diesem Fall verwendete Lambda-Syntax ist (arguments) -> {blockOfCodeOrExpression} . Die Klammer kann bei einem einzelnen Argument weggelassen werden, und die Klammern können im Falle eines einzelnen Befehls oder Ausdrucks weggelassen werden.

Mit anderen Worten, () -> System.out.println("hello world"); entspricht * zu

%Vor%

(Ich bin mir ziemlich sicher, dass es nicht Bytecode-äquivalent ist, sondern hinsichtlich der Funktionalität äquivalent ist)

    
Pedro Affonso 01.12.2015, 18:05
quelle

Tags und Links