Have you ever needed to use a library written using Java 5 features in a legacy java project written using Java 2? If yes, then you must have had difficulties in removing all your enum classes from your code and using some other solution to them. But it is not enough; you also need to change all the classes using the enum classes in the library.
If an enum is being used at a large scale or if the library is significantly large with a large no. of enums and many classes using those enums, then it becomes a great pain.
Nishant Saini(Myself) has presented a well known pattern as a solution to the problem of modifying all the code using enum classes in his blog at http://simplyjava.com
He suggests writing abstract classes in Java 2 with same name as enum and in the same package and these abstract classes is inherited by its inner classes and can not be extended outside of that class. To view this blog visit: http://www.simplyjava.com