RFR 8054213: Class name repeated in output of Type.toString()

Svetlana Nikandrova svetlana.nikandrova at oracle.com
Thu Jul 7 15:49:54 UTC 2016


Hello all,

seems like Joe is busy right now, so meanwhile I'll be happy to hear 
other opinions on this topic.

Thank you,
Svetlana

On 30.06.2016 19:44, Svetlana Nikandrova wrote:
> Hello Joe,
>
> thank you for your advice! GenericStringTest looks really good with 
> annotations. I refactored my test, please see updated webrev:
> http://cr.openjdk.java.net/~snikandrova/8054213/webrev.01/ 
> <http://cr.openjdk.java.net/%7Esnikandrova/8054213/webrev.01/>
>
> As for "." vs "$" let me provide an example:
> E.g. we have class
> public classTest {
>
>      publicNested1<Test>.Nested2<Test> foo()
>      {
>          return null;
>      }
>
>      public classNested1<T>
>      {
>          public classNested2<T>{}
>      }
> }
> The output of the
> System.out.println(Test.class.getMethod("foo",null).getReturnType());
> Output:
> class Test$Nested1$Nested2 (nested classes divided by "$")
> while
> System.out.println(Test.class.getMethod("foo",null).getGenericReturnType());
> Output:
> Test$Nested1<Test>.Nested2<Test>(nested classes divided by "." if enclosed by parametrized type and "$" in other cases).
> I think it's a little bit strange to have different separators for 
> inner classes depended on is it nested by parametrized or raw type.
>
> Thank you,
> Svetlana
>
> On 28.06.2016 22:02, joe darcy wrote:
>> Hello Svetlana,
>>
>> I'm not convinced '$' should be replaced with '.' in this context as 
>> '.' is what the separator used in source code.
>>
>> In any case, the test should be restructured. I recommend declaring 
>> an annotation type to hold the expected to string output. You can 
>> them loop over the methods from the class object and for the methods 
>> with the annotation verifying the toString output is as expected. For 
>> a guide see
>>
>>     test/java/lang/reflect/Constructor/GenericStringTest.java
>>
>> Thanks,
>>
>> -Joe
>>
>>
>> On 6/28/2016 11:25 AM, Svetlana Nikandrova wrote:
>>> May be someone can find a minute?
>>>
>>> On 27.06.2016 21:25, Svetlana Nikandrova wrote:
>>>> Kindly reminder
>>>>
>>>> On 24.06.2016 14:58, Svetlana Nikandrova wrote:
>>>>> Hello,
>>>>>
>>>>> let me try again with updated version of webrev:
>>>>> Webrev:
>>>>> http://cr.openjdk.java.net/~snikandrova/8054213/webrev.01/ 
>>>>> <http://cr.openjdk.java.net/%7Esnikandrova/8054213/webrev.01/>
>>>>> Issue:
>>>>> https://bugs.openjdk.java.net/browse/JDK-8054213
>>>>>
>>>>> Many thanks goes to Sergey Ustimenko for his valuable advises. I 
>>>>> believe fix looks nicer now.
>>>>> JPRT tested.
>>>>>
>>>>> Thank you,
>>>>> Svetlana
>>>>>
>>>>> On 17.06.2016 21:45, Svetlana Nikandrova wrote:
>>>>>> Hello,
>>>>>>
>>>>>> could you please review this fix for toString() method of 
>>>>>> ParameterizedTypeImpl.
>>>>>> The problem is that when we obtain simple name of nested type 
>>>>>> shared prefix is only removed for ParameterizedType owner. We 
>>>>>> need to remove it for other cases too.
>>>>>>
>>>>>> Please note that I also changed delimiter between outer and inner 
>>>>>> class from "." to "$". I believe as "$" is usually used to 
>>>>>> separate nested class name "." looks inconsistent and confusing.
>>>>>> Let me know if you have any objections.
>>>>>>
>>>>>> Webrev:
>>>>>> http://cr.openjdk.java.net/~msolovie/8054213/webrev.00/ 
>>>>>> <http://cr.openjdk.java.net/%7Emsolovie/8054213/webrev.00/>
>>>>>> Issue:
>>>>>> https://bugs.openjdk.java.net/browse/JDK-8054213
>>>>>>
>>>>>> Thank you,
>>>>>> Svetlana
>>>>>
>>>>
>>>
>>
>



More information about the core-libs-dev mailing list