{"id":8925,"date":"2012-09-26T23:59:34","date_gmt":"2012-09-26T18:29:34","guid":{"rendered":"http:\/\/www.tothenew.com\/blog\/?p=8925"},"modified":"2012-09-27T11:04:33","modified_gmt":"2012-09-27T05:34:33","slug":"groovy-overriding-plus-operator-in-a-class-with-interesting-example","status":"publish","type":"post","link":"https:\/\/www.tothenew.com\/blog\/groovy-overriding-plus-operator-in-a-class-with-interesting-example\/","title":{"rendered":"Groovy: Overriding &#8220;Plus&#8221; operator in a class with interesting example"},"content":{"rendered":"<p>Have you ever wondered how to overload &#8220;plus&#8221; operator in Groovy ? It is as easy as adding toppings to your favourite pizza. Let me explain. Let us taka a class for Pizza:<\/p>\n<p>&nbsp;<\/p>\n<p>[java]<br \/>\n@ToString<br \/>\nclass Pizza {<br \/>\n    String name<br \/>\n    List&lt;Topping&gt; toppings<br \/>\n    double price<\/p>\n<p>}<br \/>\n[\/java]<br \/>\nAnd another for the Topping:<br \/>\n[java]<br \/>\n@ToString<br \/>\nclass Topping {<br \/>\n    String name<br \/>\n    double price<br \/>\n}<br \/>\n[\/java]<br \/>\nNow to add toppings to the favourite pizza,  let us overload the plus operator in Pizza class like this:<br \/>\n[java]<br \/>\n\/\/Method with name &quot;plus&quot; will override the &quot;+&quot; operator. It will return a new pizza with the Toppings added.<br \/>\n    Pizza plus(Topping topping) {<br \/>\n        new Pizza(name: name, toppings: toppings + [topping], price: price + topping.price)<br \/>\n    }<br \/>\n[\/java]<\/p>\n<p>Let us order a pizza:<br \/>\n[java]<br \/>\nPizza pizza = new Pizza(name: &quot;Veg Extravaganza Pizza&quot;, price: 323.32, toppings: [])<br \/>\n[\/java]<\/p>\n<p>And our favourite toppings as well:<br \/>\n[java]<br \/>\nTopping cheeseBurst = new Topping(name: &quot;cheese Burst&quot;, price: 80)<br \/>\nTopping extraCheese = new Topping(name: &quot;Extra Cheese&quot;, price: 40.43)<br \/>\nTopping jalepenos = new Topping(name: &quot;Jallepenos&quot;, price: 50.33)<br \/>\nTopping capsicum = new Topping(name: &quot;capsicum&quot;, price: 20.32)<br \/>\n[\/java]<\/p>\n<p>Can&#8217;t wait to add them all:<br \/>\n[java]<br \/>\nPizza specialPizza = pizza + cheeseBurst + extraCheese + jalepenos + capsicum<br \/>\n[\/java]<\/p>\n<p>Let us unbox our pizza:<br \/>\n[java]<br \/>\nprintln (specialPizza)<br \/>\n\/\/OUTPUT<br \/>\n\/*<\/p>\n<p>Pizza(Veg Extravaganza Pizza, [Topping(cheese Burst, 80.0), Topping(Extra Cheese, 40.43), Topping(Jallepenos, 50.33), Topping(capsicum, 20.32)], 514.4)<br \/>\n*\/<br \/>\n[\/java]<\/p>\n<p> Isn&#8217;t it mouth watering. <\/p>\n<p> Hope this helps.<\/p>\n<p>&nbsp;<\/p>\n<p>Imran Mir<br \/>\nimran[at]intelligrape.com<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Have you ever wondered how to overload &#8220;plus&#8221; operator in Groovy ? It is as easy as adding toppings to your favourite pizza. Let me explain. Let us taka a class for Pizza: &nbsp; [java] @ToString class Pizza { String name List&lt;Topping&gt; toppings double price } [\/java] And another for the Topping: [java] @ToString class [&hellip;]<\/p>\n","protected":false},"author":6,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":12},"categories":[7],"tags":[4840,9,1092],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/8925"}],"collection":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/comments?post=8925"}],"version-history":[{"count":0,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/8925\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/media?parent=8925"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/categories?post=8925"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/tags?post=8925"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}