Fwd: RFR(m): 8140281 deprecate Optional.get()

Jonathan Gibbons jonathan.gibbons at oracle.com
Mon Apr 25 23:43:58 UTC 2016


OK.

The best I can say is that I disagree with the underlying change (to 
deprecate Optional.get) but that if the API change is generally agreed 
to, then I reluctantly agree with the edit here.

The bug needs a noreg-label.

-- jon



On 04/25/2016 04:37 PM, Stuart Marks wrote:
>
>
> On 4/25/16 4:27 PM, Jonathan Gibbons wrote:
>> Enter.java:
>> It's pretty ugly that the recommended usage is to have to add a 
>> SuppressWarnings
>> for a reasonable and valid use of Optional.get.
>>
>> Are you sure this is the API you want?
>
> Ah, I had neglected to explain this one, sorry.
>
> In the majority cases, uses of get() can be refactored away to use one 
> of the other Optional methods.
>
> In just about all the remaining cases, the code should use the 
> replacement method getWhenPresent(), which has the same semantics as 
> the current get() call. This is called for if lambdas should be 
> avoided because of startup performance, or because of checked 
> exceptions, or if it's provable from context that a value is always 
> present.
>
> The case of Enter.java is a special one; it gets compiled with the 
> boot libraries (JDK 8) and getWhenPresent() doesn't exist in those. It 
> doesn't generate a warning though. But as you explained to me the 
> other day, this code is later recompiled against the JDK 9 libraries, 
> and in that case it does generate the warning.
>
> So for this case I think calling get() with @SuppressWarnings is the 
> way to proceed. I opted to extract a local variable and put @SW on it, 
> in order to minimize its scope, but if you prefer an alternative I'd 
> be happy to change it.
>
> s'marks



More information about the compiler-dev mailing list