package net.obnoxint.mcdev.omclib; import java.util.HashMap; import java.util.Map; import net.obnoxint.mcdev.feature.Feature; import net.obnoxint.mcdev.omclib.metrics.OmcLibMetricsFeature; public enum ImplementedFeature { METRICS("metrics", OmcLibMetricsFeature.class); static final String FEATURE_PREFIX = "omc-lib_"; private static final Map<String, ImplementedFeature> nameMap = new HashMap<>(); static { for (final ImplementedFeature v : values()) { nameMap.put(v.name, v); } } static ImplementedFeature getByName(final String name) { return nameMap.get(name); } private final Class<? extends Feature> clazz; private final String name; private ImplementedFeature(final String name, final Class<? extends Feature> clazz) { this.name = name; this.clazz = clazz; } public String getName() { return FEATURE_PREFIX + name; } Class<? extends Feature> getClazz() { return clazz; } String getInternalName() { return name; } }