1Rogue

Enum inheritance

Apr 4th, 2014
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.01 KB | None | 0 0
  1. public enum SomeEnum {
  2.  
  3.     VAL_ONE("VAL_TWO", "VAL_FOUR"),
  4.     VAL_TWO("VAL_FIVE"),
  5.     VAL_THREE("VAL_FOUR"),
  6.     VAL_FOUR(),
  7.     VAL_FIVE("VAL_FOUR");
  8.  
  9.     private final List<String> children;
  10.  
  11.     private SomeEnum(String... children) {
  12.         this.children = new ArrayList<>(children);
  13.     }
  14.  
  15.      public Set<SomeEnum> getChildren(Set<SomeEnum> include) {
  16.         Set<SomeEnum> back = new HashSet<>();
  17.         back.addAll(include);
  18.         for (String s : this.children) {
  19.             SomeEnum val = SomeEnum.valueOf(s);
  20.             back.add(val);
  21.             back = this.getChildren(back);
  22.         }
  23.         return back;
  24.     }
  25.  
  26. }
  27.  
  28.  
  29. /*
  30.  
  31.    This would be called like so:
  32.  
  33. */
  34.  
  35. SomeEnum.VAL_ONE.getChildren(null); //returns VAL_TWO and VAL_FOUR, and VAL_FIVE
  36. SomeEnum.VAL_TWO.getChildren(null); //returns VAL_FIVE and VAL_FOUR
  37. SomeEnum.VAL_THREE.getChildren(null); //returns VAL_FOUR
  38. SomeEnum.VAL_FOUR.getChildren(null); //returns an empty set
  39. SomeEnum.VAL_FIVE.getChildren(null); //returns VAL_FOUR
Advertisement
Add Comment
Please, Sign In to add comment