| class TestGenerics { |
| |
| static interface EnumInterface { |
| public String getSomething(); |
| } |
| |
| static enum Enum1 implements EnumInterface { |
| A("alpha"), |
| B("beta"), |
| G("gamme"), |
| ; |
| private String text; |
| |
| Enum1(String text) { |
| this.text = text; |
| } |
| |
| public String getSomething() { |
| return text; |
| } |
| } |
| |
| static class TestBase<I extends Enum<I> & EnumInterface> { |
| |
| protected final void add(Eval eval) { |
| eval.hashCode(); |
| } |
| |
| abstract class Eval { |
| private I enumI; |
| |
| public Eval(I enumI) { |
| this.enumI = enumI; |
| } |
| |
| public final void doSomething() { |
| System.out.println(enumI.getSomething()); |
| } |
| } |
| |
| } |
| |
| |
| |
| |
| class Test1 extends TestBase<Enum1> { |
| |
| public Test1() { |
| add(new Eval(Enum1.A) {}); |
| } |
| } |
| } |