JDK 13 RFR of JDK-8217000: Refactor Class::methodToString

Remi Forax forax at univ-mlv.fr
Wed Jan 16 09:21:26 UTC 2019


Hi Joe,
in j.l.Class, in methodToString, can you change
  sb.append(getName() + "." + name + "(");
to
  sb.append(getName()).append(".").append(name).append('(');
because using the concatenation inside a StringBuilder creates another StringBuilder (java.lang doesn't use the StringConcatFactory).

also
  return typeVar.getName() + " extends " +
         Arrays.stream(bounds)
               .map(Type::getTypeName)
               .collect(Collectors.joining(" & "));
can be written
  return Arrays.stream(bounds)
               .map(Type::getTypeName)
               .collect(Collectors.joining(" & ", typeVar.getName().concat(" extends "), ""));
which also avoid the creation of an intermediary StringBuilder (at the cost of the code being less readable).
(in that case, you have also to change the same code in Executable).

regards,
Rémi

----- Mail original -----
> De: "joe darcy" <joe.darcy at oracle.com>
> À: "Stuart Marks" <stuart.marks at oracle.com>
> Cc: "core-libs-dev" <core-libs-dev at openjdk.java.net>
> Envoyé: Mercredi 16 Janvier 2019 04:05:05
> Objet: Re: JDK 13 RFR of JDK-8217000: Refactor Class::methodToString

> Good catch on the 3-argument joining in this case; I'll push with that
> amendment.
> 
> Thanks for the review,
> 
> -Joe
> 
> On 1/15/2019 3:19 PM, Stuart Marks wrote:
>>
>>
>> On 1/14/19 7:41 PM, Joe Darcy wrote:
>>> PS And for good measure, made analogous changes in Executable.java:
>>>
>>>      http://cr.openjdk.java.net/~darcy/8217000.1/
>>
>> Thanks for following up on this. Overall, looks good. One point:
>>
>>  114             sb.append('(');
>>  115
>>  116             sb.append(Arrays.stream(parameterTypes)
>>  117                       .map(Type::getTypeName)
>>  118                       .collect(Collectors.joining(",")));
>>  119
>>  120             sb.append(')');
>>
>> I think you can use the 3-arg form of joining() here, since the prefix
>> and suffix are included even if the stream is empty.
>>
> > s'marks


More information about the core-libs-dev mailing list