package com.laytonsmith.PureUtilities.ClassLoading;
/**
*
*/
public abstract class DynamicEnum<Abstracted extends Enum,Concrete> {
protected Abstracted abstracted;
protected Concrete concrete;
public DynamicEnum(Abstracted abstracted, Concrete concrete) {
this.abstracted = abstracted;
this.concrete = concrete;
}
public abstract String name();
/**
* @return always returns the concrete name
*/
public abstract String concreteName();
/**
* Override me in API
*
* @return
*/
public Abstracted getAbstracted() {
return abstracted;
}
/**
* Override me in Implementation if needed
* @return
*/
public Concrete getConcrete() {
return concrete;
}
}