используйте тот факт, что перечисления являются объектами.Добавьте приватное поле 'module' и метод 'getModule', который будет возвращать значение модуля для модульного курса и null для обязательных и факультативных курсов.
enum courseType{
Modular("module x"), Compulsory, Elective;
private String module = null;
private courseType(){}
private courseType(String module){this.module = module;}
public String getModule() {return this.module;}
}
Вы также можете выдать исключение:
enum courseType{
Modular("module x"),
Compulsory {public String getModule() { throw new AssertionError("not applicable");}},
Elective {public String getModule() { throw new AssertionError("not applicable");}};
private final String module;
private courseType(){ this.module = null;}
private courseType(String module){this.module = module;}
public String getModule() { return this.module;}
}