On Wed, Mar 31, 2010 at 8:36 AM, Bob Lee <span dir="ltr"><<a href="mailto:crazybob@crazybob.org">crazybob@crazybob.org</a>></span> wrote:<div><br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="im">Please don't add Pair. It should never be used in APIs. Adding it to java.util will enable and even encourage its use in APIs. The damage done to future Java APIs will be far worse than a few duplicate copies of Pair (I don't even see that many). I think we'll have a hard time finding use cases to back up this addition. </div>
</blockquote><div><br></div><div>FYI, here are some examples of types you can look forward to seeing in Java code near you when you have a Pair class available:</div><div><br></div><div><font class="Apple-style-span" face="'courier new', monospace"> Pair<List<String>,List<Pair<String,List<Boolean>>>></font></div>
<div><font class="Apple-style-span" face="'courier new', monospace"><br></font></div><div><font class="Apple-style-span" face="'courier new', monospace"> Map<Double,List<Pair<QueryTuple,Map<StatType,Number>>>></font></div>
<div><font class="Apple-style-span" face="'courier new', monospace"><br></font></div><div><font class="Apple-style-span" face="'courier new', monospace"> Map<Locale,Map<String,Pair<DisplayTimeScheme,Pair<String,String>>>></font></div>
<div><font class="Apple-style-span" face="'courier new', monospace"><br></font></div><div><font class="Apple-style-span" face="'courier new', monospace"> FJ.EmitFn<Pair<Long, List<Pair<String, List<Pair<Integer, Integer>>>>>></font></div>
<div><font class="Apple-style-span" face="'courier new', monospace"><br></font></div><div><font class="Apple-style-span" face="'courier new', monospace"> Processor<Pair<List<DiffItem<T>>,Pair<List<T>,List<T>>>,List<DiffItem<T>>> </font></div>
<div><font class="Apple-style-span" face="'courier new', monospace"><br></font></div><div><font class="Apple-style-span" face="'courier new', monospace"> DoFn<Pair<String,Collection<Pair<String,Pair<Double,String>>>>,Pair<String,List<Pair<String,Pair<Double,String>>>>></font></div>
<div><br></div><div>These are all real examples found in real, live production code (simplified a little).  There were only a scant few examples of this... caliber... that did not involve Pair.</div><div><br></div><div>The problem is that classes like Pair simply go that much further to indulge the desire to never have to create any actual types of our own.  When we're forced to create our own types, we begin to model our data more appropriately, which I believe leads us to create good abstractions at broader levels of granularity as well.</div>
<div><br></div></div><br>-- <br>Kevin Bourrillion @ Google<br>internal:  <a href="http://goto/javalibraries" target="_blank">http://goto/javalibraries</a><br>external: <a href="http://guava-libraries.googlecode.com" target="_blank">http://guava-libraries.googlecode.com</a><br>
<br>
</div>