<div dir="ltr"><p style="color:rgb(0,0,0)"><font face="arial, sans-serif">I've noticed that the topic of tuples in Java has come up recently, and I wanted to take this opportunity to show an idea regarding the use of<span class="gmail-Apple-converted-space"> </span><strong>"anonymous" records</strong><span class="gmail-Apple-converted-space"> </span>as a potential implementation for tuples.</font></p><p style="color:rgb(0,0,0)"><font face="arial, sans-serif">The idea would be to create<span class="gmail-Apple-converted-space"> </span><strong>ad-hoc records</strong><span class="gmail-Apple-converted-space"> </span>on the fly for short lived methods, which don’t have a formal name but are defined by their components. For example, imagine something like this:</font></p><p style="color:rgb(0,0,0)"><font face="arial, sans-serif"><span class="gmail-hljs-type">var</span><span class="gmail-Apple-converted-space"> </span><span class="gmail-hljs-variable">tuple</span><span class="gmail-Apple-converted-space"> </span><span class="gmail-hljs-operator">=</span><span class="gmail-Apple-converted-space"> </span>(<span class="gmail-hljs-type">int</span><span class="gmail-Apple-converted-space"> </span>id:<span class="gmail-Apple-converted-space"> </span><span class="gmail-hljs-number">10</span>, String name:<span class="gmail-Apple-converted-space"> </span><span class="gmail-hljs-string">"name"</span>);<br></font></p><p style="color:rgb(0,0,0)"><font face="arial, sans-serif">This would allow us to create simple, unnamed records with specified fields for quick, on-the-fly usage. Accessing values from the tuple could then work like this:<br></font></p><p style="color:rgb(0,0,0)"><font face="arial, sans-serif">var myTupleId = <a href="http://tuple.id">tuple.id</a>()</font><br></p><p style="color:rgb(0,0,0)">for passing them as arguments to methods it could be something like this. </p><p style="color:rgb(0,0,0)">void foo(Tuple<Integer, String> tuple){} </p><p style="color:rgb(0,0,0)">The idea is that, as records are just classes with special constraints to force invariants, tuples could be records with special constraints, for example as they would be meant to be created on the fly for pin point needs, they should not have validation in the constructor or overriding of getters, but they would still get automatic<span class="gmail-Apple-converted-space"> </span><code>equals()</code>,<span class="gmail-Apple-converted-space"> </span><code>hashCode()</code>, and<span class="gmail-Apple-converted-space"> </span><code>toString()</code><span class="gmail-Apple-converted-space"> </span>methods.<font face="arial, sans-serif"><br></font></p><p style="color:rgb(0,0,0)"><br></p><p style="color:rgb(0,0,0)">I don't know how problematic or bad this approach would be if there were plans to ever introduce construct tuples to Java.</p><p style="color:rgb(0,0,0)">best regards.</p></div>