¿Cómo implementar enum con genéricos?

Tengo una interfaz genérica como esta:

interface A<T> {
    T getValue();
}

Esta interfaz tiene instancias limitadas, por lo que sería mejor implementarlas como valores de enumeración. El problema es que esos casos tienen diferentes tipos de valores, así que probé el siguiente enfoque pero no se compila:

public enum B implements A {
    A1<String> {
        @Override
        public String getValue() {
            return "value";
        }
    },
    A2<Integer> {
        @Override
        public Integer getValue() {
            return 0;
        }
    };
}

¿Alguna idea sobre esto?