{"width":"100%","author_name":"uehaj","type":"rich","height":"190","categories":["groovy","closure","java8"],"version":"1.0","published":"2015-04-20 02:59:57","blog_url":"https://uehaj.hatenablog.com/","image_url":null,"blog_title":"uehaj's blog ","provider_name":"Hatena Blog","title":"Groovy\u306e\u30af\u30ed\u30fc\u30b8\u30e3\u3068Java8\u306elambda\u5f0f\u306e\u9055\u3044\u306b\u3064\u3044\u3066","author_url":"https://blog.hatena.ne.jp/uehaj/","provider_url":"https://hatena.blog","url":"https://uehaj.hatenablog.com/entry/2015/04/20/025957","html":"<iframe src=\"https://hatenablog-parts.com/embed?url=https%3A%2F%2Fuehaj.hatenablog.com%2Fentry%2F2015%2F04%2F20%2F025957\" title=\"Groovy\u306e\u30af\u30ed\u30fc\u30b8\u30e3\u3068Java8\u306elambda\u5f0f\u306e\u9055\u3044\u306b\u3064\u3044\u3066 - uehaj&#39;s blog \" class=\"embed-card embed-blogcard\" scrolling=\"no\" frameborder=\"0\" style=\"display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;\"></iframe>","description":"\u3053\u306e\u4e21\u8005\u306f\u3001\u4f3c\u3066\u3044\u308b\u3088\u3046\u3067\u3044\u3066\u3001\u57fa\u672c\u7684\u306b\u306f\u5225\u30e2\u30ce\u3067\u3059\u3002\u8868\u306b\u3057\u3066\u307f\u307e\u3059\u3002 Groovy\u306e\u30af\u30ed\u30fc\u30b8\u30e3 java8\u306elambda\u5f0f \u5c0e\u5165\u6642\u671f 2003\u5e74 2014\u5e7403\u6708 \u30ed\u30fc\u30ab\u30eb\u5909\u6570\u3078\u306e\u30a2\u30af\u30bb\u30b9 \u8aad\u307f\u66f8\u304d\u53ef\u80fd \u5b9f\u8cea\u7684\u306bfinal(\u5909\u6570\u305d\u306e\u3082\u306e\u306b\u5bfe\u3057\u3066\u306f\u8aad\u307f\u8fbc\u307f\u306e\u307f) \u5b9f\u88c5\u65b9\u6cd5 Closure\u578b\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9 MethodHandle, invokeDynamic.. \u578b\u63a8\u8ad6\u306e\u6839\u62e0 Closure<T>\u306eT\u3067\u8fd4\u308a\u5024\u3001@ClosureParams\u3067\u5f15\u6570 FunctionalInterface(SAM\u578b) \u8a18\u6cd5 { \u5f15\u6570 -> \u672c\u4f53 } { \u672c\u4f53 } {-> \u672c\u4f53 } (\u5f15\u6570) -> { \u672c\u4f53 } (\u5f15\u2026"}