Java-Lambdas : so funktioniert es in der JVM - & ist es OOP?
Beispielsweise im Falle einer anonymen inneren Klasse, ein (anonymes) Objekt-Referenz übergeben wird und Methoden dieses Objekts ausgeführt.
Lambdas sind code-Blöcke, die ausgeführt werden, wenn Sie benötigt wird.
Was passiert in der JVM beim lambdas sind aufgetreten? Wo kommt die JVM speichern des code-Blöcke Bezug auf lambdas (Haufen : die Jungen, die Alten oder die Permanente Generierung)?
Ich versucht, auf der Suche, und ich habe die syntax für Lambda-Ausdrücke, aber war nicht in der Lage zu verstehen, was geschehen innerhalb der JVM, wie in JAVA alles ist ein Objekt-basiert.
-
Also im Kontext von OOP wie lambdas arbeiten?
-
Tun lambdas gegen OOP-Konzepte?
-
Ist Lambda-gut für den garbage collector, da keine Objekte erstellt werden, daher
keine sorgen um Speicherprobleme und clearing-Speicher?
- Ich denke, dass Lambda-Ausdrücke sind eine andere Art zu schreiben Ihren code kompakter (oder vielleicht besser). Das Paradigma der OOP ist nicht berührt, in dieser Weise, aber das ist meine Meinung.
- Lambda-Ausdrücke sind ein wichtiger Teil der funktionalen Programmierung was ist anders, wie Sie wissen, von OOP.
- Auf dem Gesicht von ihm, die lambda-notation zu verletzen scheint, einige der Prinzipien der "strukturierten Programmierung", die ein (selten erwähnt) Grundlagen der OOP. Ich habe nicht studiert es nahe genug, um zu erarbeiten, obwohl, und javac hat sich zu einem großen unstrukturierten Chaos der letzten 10 Jahre sowieso.
- Wenn wir uns sorgen darüber, wie Lambda-Ausdrücke implementiert sind, im compiler oder in der virtuellen Maschine, sollte nicht jemand etwas gegen die gotos ersten?
- Es spielt keine Rolle, ob Lambda-Ausdrücke verletzen, OOP, solange Sie Ihnen helfen, besseren code zu schreiben.
- Ein häufiges Missverständnis ist, dass OOP und FP sind irgendwie uneins mit einander. Aber wir werden nicht bezahlt, um zu schreiben objektorientierter Programme oder funktionale Programme, wir werden dafür bezahlt, zu schreiben zu arbeiten, die Programme (im Idealfall jedenfalls.) Beide OOP und FP bieten uns Werkzeuge für die Natürliche Komplexität der Programmierung; wie Programmierer, sollten wir lernen, so viel wie wir können sowohl aus OOP und FP und das, was jeder von Ihnen lehrt, wo es hilft, das Ziel erreichen, schreiben, arbeiten, wartbar, testbar, gut lesbare, fehlerfreie Programme.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde nicht verschwenden meine Zeit am überlegen, ob die lambda-Ausdrücke sind ein Verstoß gegen die OO-Prinzipien. Ihr Ziel ist es, die Leistung zu erhöhen, die Sprache nicht zu schreiben OO-code, ich sehe nicht, wie Lambda-Ausdrücke können verletzen, Kapselung, Vererbung und Polymorphismus.
Diese Artikel erläutert, wie Java-Griffe, lambda-Ausdrücke:
Unter Berücksichtigung der folgenden code:
Den Lambda-code
Lambda-Ausdrücke nicht übersetzt werden in
anonymous inner classes
Sie verwenden invoke dynamic, die war eingeführt in Java 7 ausgeführt funktionale Methoden verwendet werden. Check this out.Tun, Sie verletzen
OOP
? Ich glaube nicht, dass Sie es interessieren sollte. Lambdas machen Sie Ihren code weniger kompliziert, leichter zu verstehen, und "einfacher" zu parallelise. Und das ist, was Sie kümmern sollte.Vom Gehirn Goetz Kommentar:
invokedynamic
bytecode.Sehen mehr details von der Spezifikation führen von Lambda-Ausdrücke, JSR.