[threeten-dev] Issues for some methods in ChronoField
roger riggs
roger.riggs at oracle.com
Thu May 16 13:11:28 PDT 2013
Hi Stephen,
There is still a problem because the javadoc for ChronoField.toString is
inherited
from Enum.toString and it says unless overridden it returns the name in
the declaration.
Having both name and getName is confusing especially since there is so
little difference.
Roger
On 5/13/2013 3:16 AM, Stephen Colebourne wrote:
> This code does work:
>
> for(ChronoField field: ChronoField.values()){
> assertEquals(ChronoField.valueOf(field.name()), field);
> }
>
> Note name(), not getName().
>
> Stephen
>
>
> On 13 May 2013 02:41, Patrick Zhang <patrick.zhang at oracle.com> wrote:
>> Hi Stephen,
>>
>> It is ok that getName() and toString() will return same thing.
>> But the problem is below code does not work.
>>
>> =========
>>
>> for(ChronoField field: ChronoField.values()){
>> assertEquals(ChronoField.valueOf(field.getName()), field);
>> }
>>
>> =========
>>
>> I guess field.getName() should return something can be used by
>> valueOf(String name).
>>
>> Regards
>> Patrick
>>
>>
>> On 5/10/13 6:19 PM, Stephen Colebourne wrote:
>>> The enum constant name is available via name() as with all enums.
>>>
>>> getName() is a mixed case variant. By taking control of the
>>> toString(), we ensure that all implementations (enum or non-enum) have
>>> a consistent toString.
>>>
>>> Stephen
>>>
>>>
>>> On 10 May 2013 04:50, Patrick Zhang<patrick.zhang at oracle.com> wrote:
>>>> Hi Team,
>>>>
>>>> It looks the valueOf(String name), getName() and toString() are
>>>> incompatible.
>>>> For example,
>>>> ===========
>>>> System.out.println(ChronoField.SECOND_OF_DAY.getName());
>>>> System.out.println(ChronoField.SECOND_OF_DAY.toString());
>>>> ===========
>>>> Both of them will print "SecondOfDay".
>>>>
>>>> But if you try below, it will throw exception:
>>>> System.out.println(ChronoField.valueOf("SecondOfDay"));
>>>>
>>>> FYI, below code works well:
>>>> System.out.println(ChronoField.valueOf("SECOND_OF_DAY"));
>>>>
>>>>
>>>> Personally I do not think it make sense. As one application engineer, I
>>>> would believe below code should work:
>>>> =========
>>>> for(ChronoField field: ChronoField.values()){
>>>> assertEquals(ChronoField.valueOf(field.getName()),
>>>> field);
>>>> }
>>>> =========
>>>>
>>>> Regards
>>>> Patrick
More information about the threeten-dev
mailing list