>>694
TypeはEnumではなくinterfaceとしてFruit以下の各カテゴリに継承させるか

public interface Type{}

public class Edible{
 public enum Fruit implements Type {Apple, Orange, Melon}
 ...
 public enum Meat implements Type {Beef, Pork}
}

Typeに全てのカテゴリのTypeを列挙して、階層構造はクラスのネストで代用する

public enum Type{
 Apple, Orange, Melon, ..., Beef, Pork
}

public class Edible{
 public static class Fruit{
  public static final Type Apple = Type.Apple;
  ..
 }
 ...
 public static class Meat{
  public static final Type Beef = Type.Beef;
  ..
 }
}

Enumのメリットを申し分なく使えるのは後者。でも記法としては前者の方がシンプル。