Update on String Templates (JEP 459)

Brian Goetz brian.goetz at oracle.com
Tue Mar 19 18:33:20 UTC 2024


>> Here I set forth your three examples with new names that are related
>> to those already used in the existing preview implementation of
>> StringTemplate in JDK 21 (and JDK 22—I just checked). I do this not to
>> suggest that these other names should be used, but only in the hopes
>> of reducing confusion as we begin this discussion. Later we can decide
>> whether the names “process” and “interpolate” and “combine” should be
>> changed (possibly all into the same single name).
>>
>>      // on String
>>      static String process(StringTemplate)    // previously STR
>>
>>      // on StringTemplate
>>      String interpolate()                             // STR, instance/suffix version
>>      static StringTemplate combine(StringTemplate...) // + for string templates
> Maybe I’m missing something, but: Why do we need both `String::process`
> and `StringTemplate::interpolate`?  What are the use cases?

For a similar reason we currently have String::valueOf(int) and 
Integer::toString(int).  In some use cases, the "prefix" usage (static 
method) feels more natural, whereas in others, the "suffix" usage 
(instance method) feels more natural.

Even if we end up with only one, I would rather not bias towards "of 
course it is the static version" at this early point; I am trying to 
sketch out scope right now.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/amber-spec-observers/attachments/20240319/e404374b/attachment.htm>


More information about the amber-spec-observers mailing list