<div dir="auto">Hi Anatoly,</div><div dir="auto"><br></div><div dir="auto">My feedback on your proposal would be to ask what you want, rather than to suggest how you might achieve what you want with (ab)use or extension of existing syntax. </div><div dir="auto"><br></div><div dir="auto">There have been prior discussions of ‘concise method’ declarations which would be worth reviewing, prior to your first suggestion. My understanding thus far is that the value returned from golfing away a line feed and brace is lacking. </div><div dir="auto"><br></div><div dir="auto">With respect to your second part; if named parameters and default parameter values (both goals I would love to see!) were implemented, I suspect it would be better for Java to support them through a clear and unambiguous form, rather than as a neat hack using existing syntax. </div><div dir="auto"><br></div><div dir="auto">My general perception from lurking is that syntax should come last in suggestions, not first. </div><div dir="auto"><br></div><div dir="auto">Cheers<br></div><div dir="auto"><br></div><div dir="auto">Steve</div><div dir="auto"><br></div><div dir="auto"><br></div><div dir="auto">* this is a very personal supposition, but I feel that<span style="color:rgb(0,0,0)"> named parameters and default values, if they are to come, have a substantial degree of overlap with deconstruction patterns, record like classes and reconstructors</span></div><div dir="auto"><span style="color:rgb(0,0,0)"><br></span></div><div dir="auto"><span style="color:rgb(0,0,0)"><br></span></div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, 21 Jun 2023 at 22:40, Anatoly Kupriyanov <<a href="mailto:kan.izh@gmail.com">kan.izh@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)"><div dir="ltr"><div>Not sure if it is the right mail list, please advise if there is a better place to give suggestions about Java language.</div><div><br></div><div>I suggest using lamba-like syntax for method implementation. Suppose you have a code like this:</div><div><br></div><div><div style="font-family:"JetBrains Mono",monospace;font-size:9.8pt;white-space:pre-wrap;background-color:rgb(255,255,255);color:rgb(8,8,8)"><div style="font-family:"JetBrains Mono",monospace;font-size:9.8pt;white-space:pre-wrap;background-color:rgb(255,255,255);color:rgb(8,8,8)"><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">final class </span><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,0,0)">Account </span>{<br>    <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">private final int </span><span style="font-family:"JetBrains Mono",monospace;color:rgb(135,16,148)">id</span>;<br>    <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">private </span><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,0,0)">String </span><span style="font-family:"JetBrains Mono",monospace;color:rgb(135,16,148)">name</span>;<br><br>    <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">public </span><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,98,122)">Account</span>(<span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">int </span>id) {<br>        <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">this</span>.<span style="font-family:"JetBrains Mono",monospace;color:rgb(135,16,148)">id </span>= id;<br>    }<br><br>    <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">public int </span><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,98,122)">getId</span>() {<br>        <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">return </span><span style="font-family:"JetBrains Mono",monospace;color:rgb(135,16,148)">id</span>;<br>    }<br><br>    <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">public </span><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,0,0)">String </span><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,98,122)">getName</span>() {<br>        <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">return </span><span style="font-family:"JetBrains Mono",monospace;color:rgb(135,16,148)">name</span>;<br>    }<br><br>    <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">public </span><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)"></span><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,98,122)">Account</span><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)"> </span><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,98,122)">setName</span>(<span style="font-family:"JetBrains Mono",monospace;color:rgb(0,0,0)">String </span>name) {<br>        <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">this</span>.<span style="font-family:"JetBrains Mono",monospace;color:rgb(135,16,148)">name </span>= name;</div>        <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">return </span><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">this</span>;<br>    }<div style="font-family:"JetBrains Mono",monospace;font-size:9.8pt;white-space:pre-wrap;background-color:rgb(255,255,255);color:rgb(8,8,8)"><br>    <span style="font-family:"JetBrains Mono",monospace;color:rgb(158,136,13)">@Override<br></span><span style="font-family:"JetBrains Mono",monospace;color:rgb(158,136,13)">    </span><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">public </span><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,0,0)">String </span><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,98,122)">toString</span>() {<br>        <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">return </span><span style="font-family:"JetBrains Mono",monospace;color:rgb(6,125,23)">"Account{id=" </span>+ <span style="font-family:"JetBrains Mono",monospace;color:rgb(135,16,148)">id </span>+ <span style="font-family:"JetBrains Mono",monospace;color:rgb(6,125,23)">", name='" </span>+ <span style="font-family:"JetBrains Mono",monospace;color:rgb(135,16,148)">name </span>+ <span style="font-family:"JetBrains Mono",monospace;color:rgb(6,125,23)">'</span><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,55,166)">\'</span><span style="font-family:"JetBrains Mono",monospace;color:rgb(6,125,23)">' </span>+ <span style="font-family:"JetBrains Mono",monospace;color:rgb(6,125,23)">'}'</span>;<br>    }<br><br>    <span style="font-family:"JetBrains Mono",monospace;color:rgb(158,136,13)">@Override<br></span><span style="font-family:"JetBrains Mono",monospace;color:rgb(158,136,13)">    </span><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">public boolean </span><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,98,122)">equals</span>(<span style="font-family:"JetBrains Mono",monospace;color:rgb(0,0,0)">Object </span>o) {<br>        <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">if </span>(<span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">this </span>== o) <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">return true</span>;<br>        <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">if </span>(o == <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">null </span>|| getClass() != o.getClass()) <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">return false</span>;<br>        <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,0,0)">Account account </span>= (<span style="font-family:"JetBrains Mono",monospace;color:rgb(0,0,0)">Account</span>) o;<br>        <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">return </span><span style="font-family:"JetBrains Mono",monospace;color:rgb(135,16,148)">id </span>== <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,0,0)">account</span>.<span style="font-family:"JetBrains Mono",monospace;color:rgb(135,16,148)">id</span>;<br>    }<br><br>    <span style="font-family:"JetBrains Mono",monospace;color:rgb(158,136,13)">@Override<br></span><span style="font-family:"JetBrains Mono",monospace;color:rgb(158,136,13)">    </span><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">public int </span><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,98,122)">hashCode</span>() {<br>        <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">return </span><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,0,0)">Objects</span>.<span style="font-style:italic;font-family:"JetBrains Mono",monospace">hash</span>(<span style="font-family:"JetBrains Mono",monospace;color:rgb(135,16,148)">id</span>);<br>    }<br>}<br><br><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">void </span><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,98,122)">transfer</span>(<span style="font-family:"JetBrains Mono",monospace;color:rgb(0,0,0)">Account </span>from, <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,0,0)">Account </span>to, <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">int </span>amount) {<br>    transfer(from, to, amount, <span style="font-family:"JetBrains Mono",monospace;color:rgb(23,80,235)">0</span>);<br>}<br><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">void </span><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,98,122)">transfer</span>(<span style="font-family:"JetBrains Mono",monospace;color:rgb(0,0,0)">Account </span>from, <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,0,0)">Account </span>to, <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">int </span>amount, <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">int </span>commission) {<br>    <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,0,0)">System</span>.<span style="font-style:italic;font-family:"JetBrains Mono",monospace;color:rgb(135,16,148)">out</span>.printf(<span style="font-family:"JetBrains Mono",monospace;color:rgb(6,125,23)">"Transferred %s -> %s %s (commission: %s)"</span>, from, to, amount, commission);<br>}<br></div></div></div><div><div style="font-family:"JetBrains Mono",monospace;font-size:9.8pt;white-space:pre-wrap;background-color:rgb(255,255,255);color:rgb(8,8,8)"><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">void </span><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,98,122)">main</span>() {</div><div style="font-family:"JetBrains Mono",monospace;font-size:9.8pt;white-space:pre-wrap;background-color:rgb(255,255,255);color:rgb(8,8,8)"><span style="font-style:italic;font-family:"JetBrains Mono",monospace;color:rgb(140,140,140)">//there is no way to see here which one is "</span><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,0,0)"></span>from<span style="font-style:italic;font-family:"JetBrains Mono",monospace;color:rgb(140,140,140)">" which one is "</span><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,0,0)"></span>to<span style="font-style:italic;font-family:"JetBrains Mono",monospace;color:rgb(140,140,140)">". Where is the </span><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)"></span>amount<span style="font-style:italic;font-family:"JetBrains Mono",monospace;color:rgb(140,140,140)">, where is the </span><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)"></span>commission<span style="font-style:italic;font-family:"JetBrains Mono",monospace;color:rgb(140,140,140)">?</span></div><div style="font-family:"JetBrains Mono",monospace;font-size:9.8pt;white-space:pre-wrap;background-color:rgb(255,255,255);color:rgb(8,8,8)">    transfer(<span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">new </span>Account(<span style="font-family:"JetBrains Mono",monospace;color:rgb(23,80,235)">1</span>), <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">new </span>Account(<span style="font-family:"JetBrains Mono",monospace;color:rgb(23,80,235)">2</span>), <span style="font-family:"JetBrains Mono",monospace;color:rgb(23,80,235)">100</span>);<br>    transfer(<span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">new </span>Account(<span style="font-family:"JetBrains Mono",monospace;color:rgb(23,80,235)">2</span>), <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">new </span>Account(<span style="font-family:"JetBrains Mono",monospace;color:rgb(23,80,235)">1</span>), <span style="font-family:"JetBrains Mono",monospace;color:rgb(23,80,235)">200</span>, <span style="font-family:"JetBrains Mono",monospace;color:rgb(23,80,235)">5</span>);</div><div style="font-family:"JetBrains Mono",monospace;font-size:9.8pt;white-space:pre-wrap;background-color:rgb(255,255,255);color:rgb(8,8,8)">}</div><div style="font-family:"JetBrains Mono",monospace;font-size:9.8pt;white-space:pre-wrap;background-color:rgb(255,255,255);color:rgb(8,8,8)"><br></div></div><div>The lambda syntax allows reducing boiler-plate code  significantly and new possibilities like named parameters and default parameter values. And it is syntactic sugar, just applying the same rules which are used for lambdas instead of usual method definitions. Like this:</div><div><br></div><div><div style="font-family:"JetBrains Mono",monospace;font-size:9.8pt;white-space:pre-wrap;background-color:rgb(255,255,255);color:rgb(8,8,8)"><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">final class </span><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,0,0)">Account </span>{<br>    <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">private final int </span><span style="font-family:"JetBrains Mono",monospace;color:rgb(135,16,148)">id</span>;<br>    <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">private </span><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,0,0)">String </span><span style="font-family:"JetBrains Mono",monospace;color:rgb(135,16,148)">name</span>;<br><br>    <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,98,122)">Account</span>(<span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">int </span>id) -> <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">this</span>.<span style="font-family:"JetBrains Mono",monospace;color:rgb(135,16,148)">id </span>= id;<br><br>    <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,98,122)">getId</span>() -> <span style="font-family:"JetBrains Mono",monospace;color:rgb(135,16,148)">id</span>;<br><br>    <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,98,122)">getName</span>() -> <span style="font-family:"JetBrains Mono",monospace;color:rgb(135,16,148)">name</span>;<br><br>    <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,98,122)">setName</span>(<span style="font-family:"JetBrains Mono",monospace;color:rgb(0,0,0)">String </span>name) -> {<span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)"> this</span>.<span style="font-family:"JetBrains Mono",monospace;color:rgb(135,16,148)">name </span>= name; <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">return </span><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">this</span>; }<br><br>    <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,98,122)">toString</span>() -> <span style="font-family:"JetBrains Mono",monospace;color:rgb(6,125,23)">"Account{id=" </span>+ <span style="font-family:"JetBrains Mono",monospace;color:rgb(135,16,148)">id </span>+ <span style="font-family:"JetBrains Mono",monospace;color:rgb(6,125,23)">", name='" </span>+ <span style="font-family:"JetBrains Mono",monospace;color:rgb(135,16,148)">name </span>+ <span style="font-family:"JetBrains Mono",monospace;color:rgb(6,125,23)">'</span><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,55,166)">\'</span><span style="font-family:"JetBrains Mono",monospace;color:rgb(6,125,23)">' </span>+ <span style="font-family:"JetBrains Mono",monospace;color:rgb(6,125,23)">'}'</span>;<br><br>    <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,98,122)">equals</span>(o) -> {<br>        <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">if </span>(<span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">this </span>== o) <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">return true</span>;<br>        <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">if </span>(o == <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">null </span>|| getClass() != o.getClass()) <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">return false</span>;<br>        <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,0,0)">Account account </span>= (<span style="font-family:"JetBrains Mono",monospace;color:rgb(0,0,0)">Account</span>) o;<br>        <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">return </span><span style="font-family:"JetBrains Mono",monospace;color:rgb(135,16,148)">id </span>== <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,0,0)">account</span>.<span style="font-family:"JetBrains Mono",monospace;color:rgb(135,16,148)">id</span>;<br>    }<br></div><div style="font-family:"JetBrains Mono",monospace;font-size:9.8pt;white-space:pre-wrap;background-color:rgb(255,255,255);color:rgb(8,8,8)"><br></div><div style="font-family:"JetBrains Mono",monospace;font-size:9.8pt;white-space:pre-wrap;background-color:rgb(255,255,255);color:rgb(8,8,8)">    <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,98,122)">hashCode</span>() -> <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,0,0)">Objects</span>.<span style="font-style:italic;font-family:"JetBrains Mono",monospace">hash</span>(<span style="font-family:"JetBrains Mono",monospace;color:rgb(135,16,148)">id</span>);<br>}<br></div><div style="font-family:"JetBrains Mono",monospace;font-size:9.8pt;white-space:pre-wrap;background-color:rgb(255,255,255);color:rgb(8,8,8)"><br></div><div style="font-family:"JetBrains Mono",monospace;font-size:9.8pt;white-space:pre-wrap;background-color:rgb(255,255,255);color:rgb(8,8,8)"><div style="font-family:"JetBrains Mono",monospace;font-size:9.8pt;white-space:pre-wrap;background-color:rgb(255,255,255);color:rgb(8,8,8)"><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">interface </span><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,0,0)">TransferParams </span>{</div><div style="font-family:"JetBrains Mono",monospace;font-size:9.8pt;white-space:pre-wrap;background-color:rgb(255,255,255);color:rgb(8,8,8)"><div style="font-family:"JetBrains Mono",monospace;font-size:9.8pt;white-space:pre-wrap;background-color:rgb(255,255,255);color:rgb(8,8,8)"><span style="font-style:italic;font-family:"JetBrains Mono",monospace;color:rgb(140,140,140)">//required params with compile-time guarantee</span></div></div><div style="font-family:"JetBrains Mono",monospace;font-size:9.8pt;white-space:pre-wrap;background-color:rgb(255,255,255);color:rgb(8,8,8)">    <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,0,0)">Account </span><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,98,122)">from</span>();<br>    <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,0,0)">Account </span><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,98,122)">to</span>();<br>    <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">int </span><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,98,122)">amount</span>();</div><div style="font-family:"JetBrains Mono",monospace;font-size:9.8pt;white-space:pre-wrap;background-color:rgb(255,255,255);color:rgb(8,8,8)"><div style="font-family:"JetBrains Mono",monospace;font-size:9.8pt;white-space:pre-wrap;background-color:rgb(255,255,255);color:rgb(8,8,8)"><span style="font-style:italic;font-family:"JetBrains Mono",monospace;color:rgb(140,140,140)">//optional param with mandatory default</span></div>    <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">default </span><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,98,122)">commission</span>() -> <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)"></span><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,98,122)">amount</span>() / <span style="font-family:"JetBrains Mono",monospace;color:rgb(23,80,235)">2</span><span style="font-family:"JetBrains Mono",monospace;color:rgb(23,80,235)">0</span>; </div><div style="font-family:"JetBrains Mono",monospace;font-size:9.8pt;white-space:pre-wrap;background-color:rgb(255,255,255);color:rgb(8,8,8)"><span style="font-style:italic;font-family:"JetBrains Mono",monospace;color:rgb(140,140,140)">// desugared "</span><i style="font-family:"JetBrains Mono",monospace"><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">default int </span><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,98,122)">commission</span>() {<span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">return </span>amount() / <span style="font-family:"JetBrains Mono",monospace;color:rgb(23,80,235)">10</span>;}<span style="font-family:"JetBrains Mono",monospace;color:rgb(140,140,140)">"</span></i></div><div style="font-family:"JetBrains Mono",monospace;font-size:9.8pt;white-space:pre-wrap;background-color:rgb(255,255,255);color:rgb(8,8,8)">}<br></div><br><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">void </span><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,98,122)">transfer</span>(<span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)"></span><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,0,0)">TransferParams p</span>) {<br>    <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,0,0)">System</span>.<span style="font-style:italic;font-family:"JetBrains Mono",monospace;color:rgb(135,16,148)">out</span>.printf(<span style="font-family:"JetBrains Mono",monospace;color:rgb(6,125,23)">"Transferred %s -> %s %s (commission: %s)"</span>, p.from(), <a href="http://p.to" target="_blank" style="font-family:"JetBrains Mono",monospace">p.to</a>(), p.amount(), p.commission());<br>}<br></div></div><div><div><div style="font-family:"JetBrains Mono",monospace;font-size:9.8pt;white-space:pre-wrap;background-color:rgb(255,255,255);color:rgb(8,8,8)"><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)"><br></span></div><div style="font-family:"JetBrains Mono",monospace;font-size:9.8pt;white-space:pre-wrap;background-color:rgb(255,255,255);color:rgb(8,8,8)"><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">void </span><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,98,122)">main</span>() {</div><div style="font-family:"JetBrains Mono",monospace;font-size:9.8pt;white-space:pre-wrap;background-color:rgb(255,255,255);color:rgb(8,8,8)"><span style="font-style:italic;font-family:"JetBrains Mono",monospace;color:rgb(140,140,140)">//this is very similar to single-method interface like <a class="gmail_plusreply" id="m_210258601033041944plusReplyChip-0" style="font-family:"JetBrains Mono",monospace">@FunctionalInterface </a>but for multiple methods hence it's using a "named" lambdas</span></div><div style="font-family:"JetBrains Mono",monospace;font-size:9.8pt;white-space:pre-wrap;background-color:rgb(255,255,255);color:rgb(8,8,8)">    transfer({from() -> <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">new </span>Account(<span style="font-family:"JetBrains Mono",monospace;color:rgb(23,80,235)">1</span>); to() -> <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">new </span>Account(<span style="font-family:"JetBrains Mono",monospace;color:rgb(23,80,235)">2</span>); amount() -> <span style="font-family:"JetBrains Mono",monospace;color:rgb(23,80,235)">100</span>;});<br>    transfer({from() -> <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">new </span>Account(<span style="font-family:"JetBrains Mono",monospace;color:rgb(23,80,235)">2</span>); to() -> <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">new </span>Account(<span style="font-family:"JetBrains Mono",monospace;color:rgb(23,80,235)">1</span>); amount() -> <span style="font-family:"JetBrains Mono",monospace;color:rgb(23,80,235)">200</span>; commission() -> <span style="font-family:"JetBrains Mono",monospace;color:rgb(23,80,235)">5</span>;});</div><div style="font-family:"JetBrains Mono",monospace;font-size:9.8pt;white-space:pre-wrap;background-color:rgb(255,255,255);color:rgb(8,8,8)">}</div><div style="font-family:"JetBrains Mono",monospace;font-size:9.8pt;white-space:pre-wrap;background-color:rgb(255,255,255);color:rgb(8,8,8)"><span style="font-style:italic;font-family:"JetBrains Mono",monospace;color:rgb(140,140,140)">//desugared would be something like that:</span></div><div style="font-family:"JetBrains Mono",monospace;font-size:9.8pt;white-space:pre-wrap;background-color:rgb(255,255,255);color:rgb(8,8,8)"><div style="font-family:"JetBrains Mono",monospace;font-size:9.8pt;white-space:pre-wrap;background-color:rgb(255,255,255);color:rgb(8,8,8)"><i style="font-family:"JetBrains Mono",monospace">transfer(<span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">new </span><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,0,0)">TransferParams</span>() {<br>    <span style="font-family:"JetBrains Mono",monospace;color:rgb(158,136,13)">@Override </span><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">public </span><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,0,0)">Account </span><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,98,122)">from</span>() {<br>        <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">return new </span>Account(<span style="font-family:"JetBrains Mono",monospace;color:rgb(23,80,235)">1</span>);<br>    }<br><br>    <span style="font-family:"JetBrains Mono",monospace;color:rgb(158,136,13)">@Override </span><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">public </span><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,0,0)">Account </span><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,98,122)">to</span>() {<br>        <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">return new </span>Account(<span style="font-family:"JetBrains Mono",monospace;color:rgb(23,80,235)">2</span>);<br>    }<br><br>    <span style="font-family:"JetBrains Mono",monospace;color:rgb(158,136,13)">@Override </span><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">public int </span><span style="font-family:"JetBrains Mono",monospace;color:rgb(0,98,122)">amount</span>() {<br>        <span style="font-family:"JetBrains Mono",monospace;color:rgb(0,51,179)">return </span><span style="font-family:"JetBrains Mono",monospace;color:rgb(23,80,235)">100</span>;<br>    }<br>});</i></div></div></div></div></div><div dir="ltr"><div><div><div style="font-family:"JetBrains Mono",monospace;font-size:9.8pt;white-space:pre-wrap;background-color:rgb(255,255,255);color:rgb(8,8,8)"><div style="font-family:"JetBrains Mono",monospace;font-size:9.8pt;white-space:pre-wrap;background-color:rgb(255,255,255);color:rgb(8,8,8)"><br></div></div><div style="font-family:"JetBrains Mono",monospace;font-size:9.8pt;white-space:pre-wrap;background-color:rgb(255,255,255);color:rgb(8,8,8)"><br><br></div></div></div><div><br><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature">WBR, Anatoly.</div></div></div>
</blockquote></div></div>