Casting gatherer
Viktor Klang
viktor.klang at oracle.com
Mon Apr 28 09:02:29 UTC 2025
The challenge here is that there is no, current, reification of a pattern application, so all it boils down to at this point is: given a Predicate for some type T, make a cast to some unrelated type R.
For Class-based retention of elements, it is possible to do the equivalent of testing Class::isInstance(element) and then push the element downstream after a Class::cast(element)
Cheers,
√
Viktor Klang
Software Architect, Java Platform Group
Oracle
________________________________
From: core-libs-dev <core-libs-dev-retn at openjdk.org> on behalf of Nir Lisker <nlisker at gmail.com>
Sent: Saturday, 26 April 2025 20:55
To: core-libs-dev at openjdk.org <core-libs-dev at openjdk.org>
Subject: Casting gatherer
Hi,
instanceof has been refitted to include an auto-cast ("pattern matching on instanceof"). Unfortunately, doing this as an intermediate operation on a stream requires first to filter via instanceof and then map via a cast. This is because
x instanceof MyClass myClass
returns a boolean, not myClass.
I've asked for an easier way of doing it long ago directly on Stream and was declined, but now with Gatherers I'm bringing this up again. I think it would be reasonable to put such an operation in the Gatherers class. I imagine that many Gatherer libraries, or utility classes, will include it since it's a common operation, and having it in the JDK means that it'll be done the best way possible (you can optimize where others can't, if applicable here).
-- Nir
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/core-libs-dev/attachments/20250428/c72a6bb2/attachment.htm>
More information about the core-libs-dev
mailing list