code_junkie

What's the best way to handle coexistence of the “int enum” pattern with java enums as an API evolves?

Nov 12th, 2011
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.11 KB | None | 0 0
  1. public class VitaminType {
  2. public static final int RETINOL = 0;
  3. public static final int THIAMIN = 1;
  4. public static final int RIBOFLAVIN = 2;
  5. }
  6.  
  7. public enum NutrientType {
  8. AMINO_ACID, SATURATED_FAT, UNSATURATED_FAT, CARBOHYDRATE;
  9. }
  10.  
  11. class A
  12. {
  13. public static final int MY_CONSTANT=1
  14. }
  15.  
  16. class B
  17. {
  18. ....
  19. i+=A.MY_CONSTANT;
  20. }
  21.  
  22. i+=1
  23.  
  24. public enum Vitamin {
  25.  
  26. RETINOL(0), THIAMIN(1), RIBOFLAVIN(2);
  27.  
  28. private final int intValue;
  29.  
  30. Vitamin(int n) {
  31. intValue = n;
  32. }
  33.  
  34. public int getVitaminType() {
  35. return intValue;
  36. }
  37.  
  38. public static Vitamin asVitamin(int intValue) {
  39. for (Vitamin vitamin : Vitamin.values()) {
  40. if (intValue == vitamin.getVitaminType()) {
  41. return vitamin;
  42. }
  43. }
  44. throw new IllegalArgumentException();
  45. }
  46.  
  47. }
  48.  
  49. /** Use foo.Vitamin instead */
  50. @Deprecated
  51. public class VitaminType {
  52.  
  53. public static final int RETINOL = Vitamin.RETINOL.getVitaminType();
  54. public static final int THIAMIN = Vitamin.THIAMIN.getVitaminType();
  55. public static final int RIBOFLAVIN = Vitamin.RIBOFLAVIN.getVitaminType();
  56.  
  57. }
Add Comment
Please, Sign In to add comment