[threeten-dev] Issues for some methods in ChronoField
Stephen Colebourne
scolebourne at joda.org
Mon May 13 00:16:35 PDT 2013
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