Sebb created LANG-980:
-------------------------

             Summary: DurationFormatUtils uses == for comparing objects
                 Key: LANG-980
                 URL: https://issues.apache.org/jira/browse/LANG-980
             Project: Commons Lang
          Issue Type: Bug
          Components: lang.time.*
            Reporter: Sebb
            Priority: Minor


As reported on the ML, Findbugs complains that == is being used to compare 
objects in the class DurationFormatUtils.

These objects are the strings which define the various durations: "y", "M", "d" 
etc.  These are final static objects (singletons) so the use of == should be OK 
but it is not good practice.

One way to avoid the warnings would be to use an Enum for the singleton 
objects. For example:

{code}
enum Duration { YEAR, MONTH, ... }
    static final ParseObject y = ParseObject.YEAR;
    static final ParseObject M = ParseObject.MONTH;
...
{code}

Note: the package protected fields y, M etc are currently needed for the unit 
tests.

The above change would then allow the format() method to use a switch statement 
which would likely be faster than the if chain it has to use now.

Eliminating the warnings for == which are currently safe would make it obvious 
if == was used elsewhere in an unsafe way.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Reply via email to