Uploaded image for project: 'Commons Lang'
  1. Commons Lang
  2. LANG-76

[lang] EnumUtils.getEnum() doesn't work well in 1.5

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 2.1
    • 2.5
    • lang.enums.*
    • None
    • Operating System: other
      Platform: Other

    • 36666

    Description

      Hi,
      I encountered with problem using EnumUtils.getEnum() in 1.5. It appears that my
      Enum class should be accessed first so constructor will be called. In 1.4 it was
      enough to have myClass.class, so all static members were initialized. In 1.5 it
      doesn't work.

      I noticed that static members are not initialized anymore while acessing to
      class definition. See the code
      public class Test {
      public static final class TT{
      public static final TT one = new TT();

      private TT()

      { System.out.println("Called TT" ); }

      }

      public static void main(String[] args)

      { Class cl = TT.class; // System.out.println( TT.one); // System.out.println(TT.class.isAssignableFrom(String.class)); }

      }
      In 1.4 constructor of TT is called, while in 1.5 is not.

      Actually, according to the spec
      (http://java.sun.com/docs/books/jls/second_edition/html/execution.doc.html#57946),
      this is right behavior of Java.
      Unfortunately, I didn't succeded to think about good solution..
      P.s. I know that in 1.5 we have enum built-in, but it is not the same, and we
      try to move to 1.5 without too much changes

      Attachments

        Issue Links

          Activity

            People

              niallp Niall Pemberton
              igorl Igor Laberov
              Votes:
              3 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: