{"id":4730,"date":"2018-06-19T18:18:56","date_gmt":"2018-06-19T12:48:56","guid":{"rendered":"https:\/\/www.innovationm.com\/blog\/?p=4730"},"modified":"2023-01-20T18:55:41","modified_gmt":"2023-01-20T13:25:41","slug":"functional-interface-and-lambda-expression","status":"publish","type":"post","link":"https:\/\/www.innovationm.com\/blog\/functional-interface-and-lambda-expression\/","title":{"rendered":"Functional Interface and Lambda Expression"},"content":{"rendered":"<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">Welcome to the tutorial of Functional Interface and Lambda expression. In this tutorial we will discuss fundamental concept of functional interface and lambda expression.<\/span><\/p>\n<h2><b>Functional Interface<\/b><span style=\"font-weight: 400;\"> : <\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Functional Interface is just a interface with one abstract method, but it\u00a0 can have any number of default and static method. Runnable and Comparable interface are the example of functional interface.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Example:<\/span><\/p>\n<pre class=\"lang:java decode:true\">public interface TestInterface {\r\npublic abstract void show(int n);\r\npublic static void hello() {\r\nSystem.out.println(\"static method\");\r\n}\r\npublic default void test() {\r\nSystem.out.println(\"default method\");\r\n}\r\n}\r\n\r\n<\/pre>\n<h3>\u00a0<span style=\"font-weight: 400;\">@FunctionalInterface Annotation:<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">We use <\/span><b>@Functional annotation<\/b><span style=\"font-weight: 400;\"> with a functional interface , it ensure that this interface can\u2019t have more than one abstract method. If we define more than one abstract method in in this interface then compiler shows an error \u2018<\/span><b><i>Invalid &#8216;@FunctionalInterface&#8217; annotation<\/i><\/b><span style=\"font-weight: 400;\">\u2019<\/span><\/p>\n<pre class=\"lang:java decode:true \">@FunctionalInterface\r\npublic interface TestInterface {\r\npublic abstract void show(int n);\r\npublic static void hello() {\r\nSystem.out.println(\"static method\");\r\n}\r\npublic default void test() {\r\nSystem.out.println(\"default method\");\r\n}\r\n}<\/pre>\n<h2><strong>Lambda Expression:<\/strong><\/h2>\n<p><span style=\"font-weight: 400;\">Lambda expression is an anonymous method (a method without name) which are used to implements the abstract method of functional interface.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Lambda expression introduces a new operator in java called ARROW ( <span class=\"lang:default decode:true crayon-inline \">-&gt;<\/span>\u00a0) operator. It divides the lambda expression in two parts:<\/span><\/p>\n<pre class=\"lang:java decode:true \">(n) - &gt; System.out.println(n);<\/pre>\n<p><span style=\"font-weight: 400;\">Left side specify required parameter of implemented method, it can be empty if no parameter is required. Right side of lambda expression specify the action of the lambda expression (body of implemented method);<\/span><\/p>\n<p><span style=\"font-weight: 400;\">In java 7 when we want to use functional interface in our class then \u00a0either we had to implement that interface and override abstract method of that interface or using the anonymous class.<\/span><\/p>\n<p><b>Example 1: \u00a0Let\u2019s create a thread without lambda expression.<\/b><\/p>\n<pre class=\"lang:java decode:true\">public class LambdaTest implements Runnable{\r\n  public void run() {\r\n    System.out.println(\"thread running\");\r\n  }    \r\n public static void main( String[] args ){\r\n   \t Thread t = new Thread(new LambdaTest()); \r\n   \t t.start();   \t \r\n   }\r\n}\r\n<\/pre>\n<p><span style=\"font-weight: 400;\">But in java 8 , It is not necessary \u00a0to implement functional interface in our class. We can use it with lambda expression.<\/span><\/p>\n<p><b>Example 2 : Thread creation with lambda expression<\/b><\/p>\n<pre class=\"lang:java decode:true\">public class LambdaTest{\r\npublic static void main( String[] args ){\r\nRunnable run = () -&gt; { \r\nSystem.out.println(\"Thread\");\r\n};\r\n\/* you can also write like this\r\n\r\nRunnable run = () -&gt; System.out.println(\"Thread\");\r\n*\/\r\n Thread t = new Thread(run);\r\n t.start();\r\n }\r\n}\r\n\r\n<\/pre>\n<p><span style=\"font-size: 1rem;\">From the above example , we have noticed that thread creation with lambda expression is simple and having less and clean code.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp; Welcome to the tutorial of Functional Interface and Lambda expression. In this tutorial we will discuss fundamental concept of functional interface and lambda expression. Functional Interface : Functional Interface is just a interface with one abstract method, but it\u00a0 can have any number of default and static method. Runnable and Comparable interface are the [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":4765,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[71],"tags":[278,277,224,275,276],"class_list":["post-4730","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-mobile","tag-function-programming-in-java","tag-functional-interface","tag-java","tag-java8","tag-lambda-expresion"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Functional Interface and Lambda Expression - InnovationM - Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.innovationm.com\/blog\/functional-interface-and-lambda-expression\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Functional Interface and Lambda Expression - InnovationM - Blog\" \/>\n<meta property=\"og:description\" content=\"&nbsp; Welcome to the tutorial of Functional Interface and Lambda expression. In this tutorial we will discuss fundamental concept of functional interface and lambda expression. Functional Interface : Functional Interface is just a interface with one abstract method, but it\u00a0 can have any number of default and static method. Runnable and Comparable interface are the [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.innovationm.com\/blog\/functional-interface-and-lambda-expression\/\" \/>\n<meta property=\"og:site_name\" content=\"InnovationM - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2018-06-19T12:48:56+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-01-20T13:25:41+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/06\/akash-blog-java.png\" \/>\n\t<meta property=\"og:image:width\" content=\"805\" \/>\n\t<meta property=\"og:image:height\" content=\"417\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"InnovationM Admin\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"InnovationM Admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/functional-interface-and-lambda-expression\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/functional-interface-and-lambda-expression\\\/\"},\"author\":{\"name\":\"InnovationM Admin\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/#\\\/schema\\\/person\\\/a831bf4602d69d1fa452e3de0c8862ed\"},\"headline\":\"Functional Interface and Lambda Expression\",\"datePublished\":\"2018-06-19T12:48:56+00:00\",\"dateModified\":\"2023-01-20T13:25:41+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/functional-interface-and-lambda-expression\\\/\"},\"wordCount\":273,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/functional-interface-and-lambda-expression\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/06\\\/akash-blog-java.png\",\"keywords\":[\"function programming in java\",\"functional interface\",\"java\",\"java8\",\"lambda expresion\"],\"articleSection\":[\"Mobile\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/functional-interface-and-lambda-expression\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/functional-interface-and-lambda-expression\\\/\",\"url\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/functional-interface-and-lambda-expression\\\/\",\"name\":\"Functional Interface and Lambda Expression - InnovationM - Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/functional-interface-and-lambda-expression\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/functional-interface-and-lambda-expression\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/06\\\/akash-blog-java.png\",\"datePublished\":\"2018-06-19T12:48:56+00:00\",\"dateModified\":\"2023-01-20T13:25:41+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/#\\\/schema\\\/person\\\/a831bf4602d69d1fa452e3de0c8862ed\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/functional-interface-and-lambda-expression\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/functional-interface-and-lambda-expression\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/functional-interface-and-lambda-expression\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/06\\\/akash-blog-java.png\",\"contentUrl\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/06\\\/akash-blog-java.png\",\"width\":805,\"height\":417},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/functional-interface-and-lambda-expression\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Functional Interface and Lambda Expression\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/\",\"name\":\"InnovationM - Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/#\\\/schema\\\/person\\\/a831bf4602d69d1fa452e3de0c8862ed\",\"name\":\"InnovationM Admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5c99d9eece9dfbc82297cf34ddd58e9fe05bb52fe66c8f6bf6c0a45bfb6d7629?s=96&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5c99d9eece9dfbc82297cf34ddd58e9fe05bb52fe66c8f6bf6c0a45bfb6d7629?s=96&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5c99d9eece9dfbc82297cf34ddd58e9fe05bb52fe66c8f6bf6c0a45bfb6d7629?s=96&r=g\",\"caption\":\"InnovationM Admin\"},\"sameAs\":[\"http:\\\/\\\/www.innovationm.com\\\/\"],\"url\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/author\\\/innovationmadmin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Functional Interface and Lambda Expression - InnovationM - Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.innovationm.com\/blog\/functional-interface-and-lambda-expression\/","og_locale":"en_US","og_type":"article","og_title":"Functional Interface and Lambda Expression - InnovationM - Blog","og_description":"&nbsp; Welcome to the tutorial of Functional Interface and Lambda expression. In this tutorial we will discuss fundamental concept of functional interface and lambda expression. Functional Interface : Functional Interface is just a interface with one abstract method, but it\u00a0 can have any number of default and static method. Runnable and Comparable interface are the [&hellip;]","og_url":"https:\/\/www.innovationm.com\/blog\/functional-interface-and-lambda-expression\/","og_site_name":"InnovationM - Blog","article_published_time":"2018-06-19T12:48:56+00:00","article_modified_time":"2023-01-20T13:25:41+00:00","og_image":[{"width":805,"height":417,"url":"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/06\/akash-blog-java.png","type":"image\/png"}],"author":"InnovationM Admin","twitter_misc":{"Written by":"InnovationM Admin","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.innovationm.com\/blog\/functional-interface-and-lambda-expression\/#article","isPartOf":{"@id":"https:\/\/www.innovationm.com\/blog\/functional-interface-and-lambda-expression\/"},"author":{"name":"InnovationM Admin","@id":"https:\/\/www.innovationm.com\/blog\/#\/schema\/person\/a831bf4602d69d1fa452e3de0c8862ed"},"headline":"Functional Interface and Lambda Expression","datePublished":"2018-06-19T12:48:56+00:00","dateModified":"2023-01-20T13:25:41+00:00","mainEntityOfPage":{"@id":"https:\/\/www.innovationm.com\/blog\/functional-interface-and-lambda-expression\/"},"wordCount":273,"commentCount":0,"image":{"@id":"https:\/\/www.innovationm.com\/blog\/functional-interface-and-lambda-expression\/#primaryimage"},"thumbnailUrl":"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/06\/akash-blog-java.png","keywords":["function programming in java","functional interface","java","java8","lambda expresion"],"articleSection":["Mobile"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.innovationm.com\/blog\/functional-interface-and-lambda-expression\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.innovationm.com\/blog\/functional-interface-and-lambda-expression\/","url":"https:\/\/www.innovationm.com\/blog\/functional-interface-and-lambda-expression\/","name":"Functional Interface and Lambda Expression - InnovationM - Blog","isPartOf":{"@id":"https:\/\/www.innovationm.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.innovationm.com\/blog\/functional-interface-and-lambda-expression\/#primaryimage"},"image":{"@id":"https:\/\/www.innovationm.com\/blog\/functional-interface-and-lambda-expression\/#primaryimage"},"thumbnailUrl":"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/06\/akash-blog-java.png","datePublished":"2018-06-19T12:48:56+00:00","dateModified":"2023-01-20T13:25:41+00:00","author":{"@id":"https:\/\/www.innovationm.com\/blog\/#\/schema\/person\/a831bf4602d69d1fa452e3de0c8862ed"},"breadcrumb":{"@id":"https:\/\/www.innovationm.com\/blog\/functional-interface-and-lambda-expression\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.innovationm.com\/blog\/functional-interface-and-lambda-expression\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.innovationm.com\/blog\/functional-interface-and-lambda-expression\/#primaryimage","url":"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/06\/akash-blog-java.png","contentUrl":"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/06\/akash-blog-java.png","width":805,"height":417},{"@type":"BreadcrumbList","@id":"https:\/\/www.innovationm.com\/blog\/functional-interface-and-lambda-expression\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.innovationm.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Functional Interface and Lambda Expression"}]},{"@type":"WebSite","@id":"https:\/\/www.innovationm.com\/blog\/#website","url":"https:\/\/www.innovationm.com\/blog\/","name":"InnovationM - Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.innovationm.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.innovationm.com\/blog\/#\/schema\/person\/a831bf4602d69d1fa452e3de0c8862ed","name":"InnovationM Admin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/5c99d9eece9dfbc82297cf34ddd58e9fe05bb52fe66c8f6bf6c0a45bfb6d7629?s=96&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/5c99d9eece9dfbc82297cf34ddd58e9fe05bb52fe66c8f6bf6c0a45bfb6d7629?s=96&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5c99d9eece9dfbc82297cf34ddd58e9fe05bb52fe66c8f6bf6c0a45bfb6d7629?s=96&r=g","caption":"InnovationM Admin"},"sameAs":["http:\/\/www.innovationm.com\/"],"url":"https:\/\/www.innovationm.com\/blog\/author\/innovationmadmin\/"}]}},"_links":{"self":[{"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/posts\/4730","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/comments?post=4730"}],"version-history":[{"count":0,"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/posts\/4730\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/media\/4765"}],"wp:attachment":[{"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/media?parent=4730"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/categories?post=4730"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/tags?post=4730"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}