Fast jedes Buch Einführung Lambda mit einer Runnable
anonymen Klasse beginnen, oder sogar als Alternative zu "anonyme Klasse" erwähnt. Lambda gibt jedoch das gleiche Objekt zurück, während die anonyme Klasse eine neue zurückgibt.Warum Lambda gibt identische Objekt
1. Warum Lambda verhält sich so?
2. Warum ist es so konzipiert?
Ich denke, der Grund könnte sein, die Möglichkeit hinzuzufügen, Methoden mit Lambda, wie lambda2 (lambda()) zu ketten. –
Weil Sie nicht mehrere Instanzen von 'Runnable' benötigen, die genau dasselbe tun. Die anonyme innere Klasse ist jedoch mit dem "neuen" Operator verbunden, der garantiert, dass eine neue eindeutige Instanz erzeugt wird, unabhängig davon, ob Sie sie benötigen oder nicht. Lambda-Ausdrücke wurden geöffnet, um weniger Objekte zu erstellen, was explizit in der Spezifikation deklariert wurde. Wie in [Erzeugt ein Lambda-Ausdruck jedes Mal, wenn er ausgeführt wird, ein Objekt auf dem Heap erstellen?] (Https://stackoverflow.com/q/27524445/2711488) ... – Holger
Das Vermeiden von Allokationen ist ein gutes Ding ™, also gibt es keinen Grund, warum es sollte sich anders verhalten (obwohl es könnte). – the8472