{"id":1811,"date":"2013-02-16T15:16:27","date_gmt":"2013-02-16T13:16:27","guid":{"rendered":"http:\/\/www.tutego.de\/blog\/javainsel\/?p=1811"},"modified":"2013-02-16T15:16:27","modified_gmt":"2013-02-16T13:16:27","slug":"rekursive-lambda-ausdrcke","status":"publish","type":"post","link":"https:\/\/www.tutego.de\/blog\/javainsel\/2013\/02\/rekursive-lambda-ausdrcke\/","title":{"rendered":"Rekursive Lambda-Ausdr&uuml;cke"},"content":{"rendered":"<p>Lambda-Ausdr\u00fccke k\u00f6nnen auf sich selbst verweisen, doch da ein this zur Selbstreferenz nicht m\u00f6glich ist, ist ein kleiner Umweg n\u00f6tig. Erstes muss eine Objekt- oder Klassenvariable deklariert werden, zweitens dann dieser Variablen ein Lambda-Ausdruck zugewiesen werden und dann kann drittens dieser Lambda-Ausdruck auf diese Variable zugreifen und einen rekursiven Aufruf starten. F\u00fcr den Klassiker der Fakult\u00e4t sieht das so aus:<\/p>\n<p>public class RecursiveFactLambda {<\/p>\n<p> public static IntFunction&lt;Integer&gt; <b>fact<\/b> = n -&gt; (n == 0) ? 1 : n * <b>fact<\/b>.apply(n-1);<\/p>\n<p> public static void main( String[] args ) {<\/p>\n<p>&#160;&#160; System.out.println( fact.apply( 5 ) ); \/\/ 120<\/p>\n<p> }<\/p>\n<p>}<\/p>\n<p>IntFunction ist eine funktionale Schnittstelle mit den der Operation T apply(int i), und T ist ein generischer R\u00fcckgabetyp, den wir hier mit Integer belegt haben.<\/p>\n<p>fact h\u00e4tte genauso gut als normale Methode deklariert werden k\u00f6nnen \u2013 gro\u00dfartige Vorteile bietet die Schreibweise mit Lambda-Ausdr\u00fccken nicht. Zumal jetzt auch der Begriff \u201eanonyme Funktion\u201c nicht mehr so richtig schl\u00fcssig ist, da der Lambda-Ausdruck ja doch einen Namen hat, n\u00e4mlich fact.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Lambda-Ausdr\u00fccke k\u00f6nnen auf sich selbst verweisen, doch da ein this zur Selbstreferenz nicht m\u00f6glich ist, ist ein kleiner Umweg n\u00f6tig. Erstes muss eine Objekt- oder Klassenvariable deklariert werden, zweitens dann dieser Variablen ein Lambda-Ausdruck zugewiesen werden und dann kann drittens dieser Lambda-Ausdruck auf diese Variable zugreifen und einen rekursiven Aufruf starten. F\u00fcr den Klassiker der [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","_links_to":"","_links_to_target":""},"categories":[11,66],"tags":[],"class_list":["post-1811","post","type-post","status-publish","format-standard","hentry","category-insel","category-java-8"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/1811","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/comments?post=1811"}],"version-history":[{"count":0,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/1811\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/media?parent=1811"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/categories?post=1811"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/tags?post=1811"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}