<div dir="ltr"><div style>I like:</div><div><br></div>orElseFrom(Supplier)<div><br></div><div style>I don't like orElseGet(Supplier) because whenever I read orElse(other), I "translate" it as getOrElse(other).</div>
</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Jan 14, 2013 at 10:23 AM, Brian Goetz <span dir="ltr"><<a href="mailto:brian.goetz@oracle.com" target="_blank">brian.goetz@oracle.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Null is a valid value for orElse(T) but not for orElse(Supplier). So we care about this ambiguity (there are other similar ones we don't care about, when null isn't a valid value for either option.)<br>
<br>
orElseNull is a possibility.<br>
<br>
Alternately, orElseGet(Supplier) ? orElseFrom(Supplier)?<br>
<div class="HOEnZb"><div class="h5"><br>
On Jan 13, 2013, at 10:00 PM, Joe Bowbeer wrote:<br>
<br>
> In b72, optional.orElse(null) is ambiguous because it matches both of the orElse forms:<br>
><br>
> T orElse(T other)<br>
> T orElse(Supplier<T> other)<br>
><br>
> For example, this won't compile:<br>
><br>
> return stream.max(comparator).orElse(null);<br>
><br>
><br>
> Optional needs a concise way to return null, so I suggest:<br>
><br>
> T orElseNull()<br>
><br>
> --Joe<br>
<br>
</div></div></blockquote></div><br></div>