<div class="gmail_quote">On Fri, Sep 14, 2012 at 9:15 AM, David M. Lloyd <span dir="ltr">&lt;<a href="mailto:david.lloyd@redhat.com" target="_blank">david.lloyd@redhat.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">I don&#39;t like it; I think it&#39;s going to result in things like:</div>
<br>
Map&lt;String,Optional&lt;List&lt;<u></u>Optional&lt;String&gt;&gt;&gt;&gt;<br>
<br>
or worse.</blockquote><div><br></div><div>Only if you really work hard at obfuscating your code. I&#39;ve been using a version of Optional for about a year, and the only time I had reason to use Optional as a type parameter was Callable&lt;Optional&lt;Result&gt;&gt;, which conveys exactly what I mean: &quot;Might have a result when it returns.&quot;</div>
<div><br></div><div>There&#39;s very little incentive (and a pretty daunting disincentive, in fact) to do anything with an Optional besides test for the presence of a value and get that value from it. Optional has (or should have) convenience methods to get default values in the event that you do <b>not</b> want a different code path:</div>
<div><br></div><div>    Result result = filteredResults.findFirst().or(defaultResult);</div><div><br></div><div>In such cases, you don&#39;t even mention the Optional type explicitly.</div><div><br></div><div>Calling it a matter of style is misleading: It helps prevent user errors, and that&#39;s a very desirable property. The experts here might be disciplined enough not to need such help, but we can&#39;t assume that everyone using these libraries will be that disciplined.</div>
<div><br></div><div>One of the things that appealed to me about Java early on was the sense that if I could get the code to compile, it would just work. My experiences have fallen short of that ideal over the years, of course, but with Optional I&#39;ve had recent moments where it has come gratifyingly close.</div>
<div><br></div><div>--tim</div><div><br></div></div>