> From: "Gavin Bierman" <gavin.bier...@oracle.com>
> To: "Brian Goetz" <brian.go...@oracle.com>
> Cc: "amber-spec-experts" <amber-spec-experts@openjdk.java.net>
> Sent: Vendredi 1 Octobre 2021 14:49:01
> Subject: Re: Pattern Matching for switch (Second Preview)

>> On 30 Sep 2021, at 23:25, Brian Goetz < [ mailto:brian.go...@oracle.com |
>> brian.go...@oracle.com ] > wrote:

>> [ moving to a-s-e ]

>> I get the concern that a type pattern is no longer "just a variable
>> declaration"; that was a nice part of the "patterns aren't really so hard to
>> understand" story. But I think the usability is likely to be not very good.
>> Take this example:

>> sealed interface Node<T> { }
>> record AddNode<T>(Node<T> left, Node<T> right) extends Node<T> { }
>> ...

>> Node<int> ni = ...
>> switch (ni) {
>> case AddNode(Node left, Node right) -> ...

>> There's no instantiation of Node possible here *other than* Node<int>. Which
>> means we are forcing users to either redundantly type out the instantiation
>> (which can get big), or use casts inside the body when they pull things out 
>> of
>> left and right. (And patterns were supposed to make casts go away.) There's
>> almost no case where someone wants a raw type here.

> But surely they should write var here?

yes, here is another example 

List<String> list = ... 
switch(list) { 
case ArrayList al -> ... 

> Gavin

RĂ©mi 

Reply via email to