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

Joe Darcy joe.darcy at oracle.com
Tue Jan 22 21:10:56 UTC 2019


Hi Remi,

Catching up on email, at least to my eye, the current version is easier 
to read than the proposed refactoring in both cases.

I wouldn't expect this code to be performance critical so I'm inclined 
to leave the code as-is unless a performance motivation is found.

Thanks for the comments,

-Joe

On 1/16/2019 1:21 AM, Remi Forax wrote:
> 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