New candidate JEP: 456: Unnamed Variables and Patterns

Brian Goetz brian.goetz at oracle.com
Tue Sep 26 13:52:47 UTC 2023


I see now I answered a slightly different question :)

We do support case labels for enums in pattern switches, and they 
participate in exhaustiveness.  But we don't currently support mixing 
`case pattern, constant-label` in a single case label.  This is waiting 
for a more comprehensive treatment of constants as patterns.

On 9/26/2023 8:32 AM, Tagir Valeev wrote:
> Hello! As we are finalizing this feature, can we squeeze in a little
> improvement? Namely, support enum and patterns within the same case
> label, provided that the patterns do not declare any variables. Like:
>
> enum X {A, B}
>
> static void test(Object obj) {
>    switch (obj) {
>      case String _, X.B -> System.out.println("B or String");
>      default -> System.out.println("other");
>    }
> }
>
> public static void main(String[] args) {
>    Test.test("ddd");
>    Test.test(X.B);
> }
>
> Currently, such a code is not supported. Or will it be considered in
> future JEPs?
>
> With best regards,
> Tagir Valeev.
>
> On Mon, Sep 25, 2023 at 6:25 PM Mark Reinhold<mark.reinhold at oracle.com>  wrote:
>> https://openjdk.org/jeps/456
>>
>>    Summary: Enhance the Java language with unnamed variables, which
>>    can be initialized but not used, and unnamed patterns, which match a
>>    record component without stating the component's name or type. Both are
>>    denoted by an underscore character, _.
>>
>> - Mark
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/amber-spec-experts/attachments/20230926/a0d291c6/attachment-0001.htm>


More information about the amber-spec-experts mailing list