{"id":1686,"date":"2013-02-02T11:49:16","date_gmt":"2013-02-02T09:49:16","guid":{"rendered":"http:\/\/www.tutego.de\/blog\/javainsel\/?p=1686"},"modified":"2013-02-02T11:49:17","modified_gmt":"2013-02-02T09:49:17","slug":"annotation-functionalinterface","status":"publish","type":"post","link":"https:\/\/www.tutego.de\/blog\/javainsel\/2013\/02\/annotation-functionalinterface\/","title":{"rendered":"Annotation @FunctionalInterface"},"content":{"rendered":"<p>Zwar eignet sich jede Schnittstelle mit einer abstrakten Methode als funktionale Schnittstelle und damit f\u00fcr einen Lambda-Ausdruck, doch nicht jede Schnittstelle, die im Moment nur eine abstrakte Methode deklariert, soll auch f\u00fcr Lambda-Ausdr\u00fccke verwendet werden. Der Compiler kann das jedoch nicht wissen, ob sich vielleicht Schnittstellen weiterentwickeln, und daher gibt es zur Dokumentation die Annotation FunctionalInterface im java.lang-Paket.<\/p>\n<p><b>Beispiel:<\/b> Eine eigene funktionale Schnittstelle soll FunctionalInterface markieren:<\/p>\n<p>@FunctionalInterface<\/p>\n<p>interface MyFunctionalInterface {<\/p>\n<p>void foo();<\/p>\n<p>}<\/p>\n<p>Der Compiler pr\u00fcft, ob die Schnittstelle mit einer solchen Annotation tats\u00e4chlich nur exakt eine abstrakte Methode enth\u00e4lt und l\u00f6st einen Fehler aus, wenn dem nicht so ist. Aus Kompatibilit\u00e4tsgr\u00fcnden erzwingt der Compiler nicht diese Annotation bei funktionalen Schnittstellen, um inneren Klassen von alten Schnittstellen einfach in Lambda-Ausdr\u00fccke umzuschreiben zu k\u00f6nnen. Die Annotation ist also keine Voraussetzung f\u00fcr die Nutzung in einem Lambda-Ausdruck und dient bisher nur der Dokumentation.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Zwar eignet sich jede Schnittstelle mit einer abstrakten Methode als funktionale Schnittstelle und damit f\u00fcr einen Lambda-Ausdruck, doch nicht jede Schnittstelle, die im Moment nur eine abstrakte Methode deklariert, soll auch f\u00fcr Lambda-Ausdr\u00fccke verwendet werden. Der Compiler kann das jedoch nicht wissen, ob sich vielleicht Schnittstellen weiterentwickeln, und daher gibt es zur Dokumentation die Annotation [&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-1686","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\/1686","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=1686"}],"version-history":[{"count":0,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/1686\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/media?parent=1686"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/categories?post=1686"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/tags?post=1686"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}