java如何允许其他人通过API向类添加自定义枚举
所以我创建了一个名为properties的类,它的一部分就是这样的(由于大量重复而被截断)
public enum Parameters {
SET_CUSTOM_NAME {
public void process(Entity entity, Object obj, YamlConfiguration yml, String module) {
entity.setCustomName(ChatColor.translateAlternateColorCodes('&', String.valueOf(obj)));
}
},
SET_CUSTOM_NAME_VISIBLE {
public void process(Entity entity, Object obj, YamlConfiguration yml, String module) {
entity.setCustomNameVisible((boolean) obj);
}
},
SET_NO_AI {
public void process(Entity entity, Object obj, YamlConfiguration yml, String module) {
NBTUtils.addEntityTag(entity, "NoAI", (boolean) obj);
}
},
SET_SILENT {
public void process(Entity entity, Object obj, YamlConfiguration yml, String module) {
NBTUtils.addEntityTag(entity, "Silent", (boolean) obj);
}
}
{...};
public abstract void process(Entity entity, Object obj, YamlConfiguration yml, String module);
}
正在通过以下方式调用这些参数:
Parameters.valueOf(param.getKey().toUpperCase()).process(entity, param.getValue(), yml, module);
^“param”是列表中的缓存字符串。别介意
我唯一的问题是我想让其他人能够将自己的进程添加到enum类中,这样就不会有人被限制在我自己的进程和我自己的进程中。 这可能吗
换句话说,是否可以通过API将枚举添加到此中?我应该包括什么方法,允许其他开发人员访问enum类并向其中添加他们自己的进程
# 1 楼答案
枚举应该表示一组完整的值。你永远不会在运行时添加到anum,这与定义相矛盾
对于您想要做的事情,您可以定义一个接口,并保存一个名称到实现的映射:
# 2 楼答案
枚举不可扩展。但您可以简单地回退到基本OO:定义一个抽象类,按名称跟踪该类的所有实例,并为所有已知用例创建实例: