New candidate JEP: 443: Unnamed Patterns and Variables (Preview)
Holo The Sage Wolf
holo3146 at gmail.com
Wed Mar 22 13:31:21 UTC 2023
Indeed, the emphasis I tried to make was about making it *implicit* unnamed
On Wed, Mar 22, 2023, 14:37 Red IO <redio.development at gmail.com> wrote:
> I think he suggests to get rid of the variable entirely like in his
> example:
>
> try {
>
> } catch (Exception) //<- nothing here
> {
> }
>
> And try (new AutoclosableImpl()) {//<- no assignment to a variable
>
> }
>
> Great regards
> RedIODev
>
>
> On Wed, Mar 22, 2023, 13:19 Brian Goetz <brian.goetz at oracle.com> wrote:
>
>>
>>
>> On 3/21/2023 5:39 PM, Holo The Sage Wolf wrote:
>>
>> Is there a reason not to allow implicit Unnamed Variables in
>> try-with-resources and Catch-block?
>>
>>
>> The JEP already describes these cases:
>>
>> Unnamed variables
>>
>> The following kinds of declarations can introduce either a named variable
>> (denoted by an identifier) or an unnamed variable (denoted by an
>> underscore):
>>
>> - A local variable declaration statement in a block (JLS 14.4.2),
>> - A resource specification of a try-with-resources statement (JLS
>> 14.20.3),
>> - The header of a basic for statement (JLS 14.14.1),
>> - The header of an enhanced for loop (JLS 14.14.2),
>> - An exception parameter of a catch block (JLS 14.20), and
>> - A formal parameter of a lambda expression (JLS 15.27.1).
>>
>>
>> Try with resources, and catch blocks, are listed as places where you can
>> use unnamed variables. Am I undersatnding your question properly?
>>
>>
>>
>> To allow:
>>
>> try (Scope.open()) {
>> ...
>> }
>> ---
>> try { ... }
>> catch (Exception) { ... }
>>
>> to be implicitly
>>
>> try (var _ = Scope.open()) {
>> ...
>> }
>> ---
>> try { ... }
>> catch (Exception _) { ... }
>>
>> Unlike a normal expression, and expression on the RHS of a
>> try-with-resources variable has an explicit context, there is no fear of
>> someone forgetting the result of the expression by mistake.
>>
>> In a Catch block the exception is uniquely accessible through the
>> variable declared in the declaration of the block, so there is no fear that
>> someone will get confused by this implicitness.
>>
>> This implicitness will make stuff like logging context, which is far from
>> a niche use case, much more elegant.
>>
>> On Tue, Mar 21, 2023 at 9:17 PM Mark Reinhold <mark.reinhold at oracle.com>
>> wrote:
>>
>>> https://openjdk.org/jeps/443
>>>
>>> Summary: Enhance the Java language with unnamed patterns, which match
>>> a record component without stating the component's name or type,
>>> and unnamed variables, which can be initialized but not used. Both
>>> are denoted by an underscore character, _. This is a preview language
>>> feature.
>>>
>>> - Mark
>>
>>
>>
>> --
>> Holo The Wise Wolf Of Yoitsu
>>
>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/jdk-dev/attachments/20230322/0a76db94/attachment.htm>
More information about the jdk-dev
mailing list