RFR - JDK-8203703 String::transform (CSR Review)
Jim Laskey
james.laskey at oracle.com
Wed Sep 19 13:51:19 UTC 2018
I’m not married to the name (I suggested apply). “with” also works. The originating goal was to allow custom alignment methods for those developers not satisfied with String::align(). String would logically be the result. “transform" became generic when the case was made that other types might also be relevant.
Example:
import mystuff.HTMLDocument;
HTMLDocument html = `
<html>
<body>
<p>Hello World.</p>
</body>
</html>
`.transform(HTMLDocument::parse);
Not a strong argument. Along with Remi’s request for primitive variants, I might be lead back to just supporting String.
Cheers,
— Jim
> On Sep 19, 2018, at 10:25 AM, Stephen Colebourne <scolebourne at joda.org> wrote:
>
> On Tue, 18 Sep 2018 at 18:57, Jim Laskey <james.laskey at oracle.com> wrote:
>>
>> Please review the API for String::transform. The goal is to provide a String instance method to allow function application of custom transformations applied to an instance of String.
>>
>> csr: https://bugs.openjdk.java.net/browse/JDK-8203703
>> jbs: https://bugs.openjdk.java.net/browse/JDK-8203442
>
> The similar method in java.time.* is named `with`
> https://download.java.net/java/early_access/jdk11/docs/api/java.base/java/time/LocalDate.html#with(java.time.temporal.TemporalAdjuster)
>
> String capped =
> title.with(Example::naiveDropFirstWord);
> .with(Example::naiveTitleCase)
> .concat(".");
>
> However, I note that this method is designed to return any type, not
> just String (making it a different kind of method). But *why* return
> any type? The motivation for doing so is not clear from the CSR.
>
> Stephen
More information about the core-libs-dev
mailing list