Hi, I updated from Commons Lang 2.1 to Commons Lang 2.3 and got some issues with the changed compareTo() method of Enum.
Here is my simplified Enum: public class ItemStatus extends Enum { public static final ItemStatus CANCEL = new ItemStatus("CANCEL"); public static final ItemStatus SHIPPED = new ItemStatus("SHIPPED"); public static final ItemStatus MOVED = new ItemStatus("MOVED"); /** Contains each status. */ private static Set statuses; // -------------------------------------------------------- Constructors protected ItemStatus(String name) { super(name); System.out.println(this.getClass().getName()); buildStatusSet(); } // -------------------------------------------------------- Static Methods /** * Returns the item status enumeration object for the given status name. * * @param itemStatus * name of the item status * @return the enumeration object, or <code>null</code> if it does not * exist */ public static ItemStatus valueOf(String itemStatus) { return (ItemStatus) getEnum(ItemStatus.class, itemStatus); } // -------------------------------------------------------- Public Methods /** * [EMAIL PROTECTED] */ // @Override public final Class getEnumClass() { return ItemStatus.class; } /** * Gets all defined ItemStatus. * * @return the enum object List * @see org.apache.commons.lang.enums.Enum#getEnumList(Class) */ public static List getEnumList() { return getEnumList(ItemStatus.class); } // -------------------------------------------------------- Private Methods /** * Adds the status name to a Set of status names. */ private void buildStatusSet() { if (statuses == null) { statuses = new TreeSet(); } statuses.add(this); } } And I got the ClassCastExcetion in the private "buildStatusSet()-Method if I try to add the status to the TreeSet. The TreeSet calls the compareTo-Method of the Enum. In Commons Lang 2.2 this method was changed with an additional comparison of the classes. In my constructor I added a System.out.println of the instantiated classes and got the following output: com.myapp.common.model.order.ItemStatus$1 com.myapp.common.model.order.ItemStatus$2 com.myapp.common.model.order.ItemStatus$3 The compareTo-Method now tries to compare ItemStatus$1 with ItemStatus$2 and says to me, that my ItemStatus-Enums are different classes. I saw in JIRA there are some other issues in ValuedEnum.compareTo(). Is there a bug in the Enum.compareTo() implementation which got changed in Lang 2.2? Thanks in advance for any help or comment on this issue. Regards, Sam