Java 创建枚举的超类
我目前使用的枚举定义如下:Java 创建枚举的超类,java,inheritance,enums,Java,Inheritance,Enums,我目前使用的枚举定义如下: public enum Language{ English("english", "eng", "en", "en_GB", "en_US"), German("german", "de", "ge"), Croatian("croatian", "hr", "cro"), Russian("russian"); private final List<String> values; Language(St
public enum Language{
English("english", "eng", "en", "en_GB", "en_US"),
German("german", "de", "ge"),
Croatian("croatian", "hr", "cro"),
Russian("russian");
private final List<String> values;
Language(String ...values) {
this.values = Arrays.asList(values);
}
public List<String> getValues() {
return values;
}
public static Language find(String name) {
for (Language lang : Language.values()) {
if (lang.getValues().contains(name)) {
return lang;
}
}
return null;
}
}
提前谢谢你 枚举不能在Java中扩展。枚举不能在Java中扩展。在Java中,这有很多困难,但是一个解决方案将为您提供大量您需要的内容,那就是让所有枚举实现一个公共接口 对于实现接口的方法来说,重用代码会有困难,但是可以通过将实际工作委托给外部方法来减轻损害 此外,通常需要一个按名称查找函数,该函数将为您提供正确的枚举成员,而不考虑确切的
enum
类。这可以使用一个单独的聚合所有枚举成员的HashMap
来完成
基本上,这是我现在在一个项目中做这件事的概要。在Java中这是有困难的,但是一个解决方案可以给你很多你需要的东西,那就是让你所有的枚举实现一个公共接口 对于实现接口的方法来说,重用代码会有困难,但是可以通过将实际工作委托给外部方法来减轻损害 此外,通常需要一个按名称查找函数,该函数将为您提供正确的枚举成员,而不考虑确切的
enum
类。这可以使用一个单独的聚合所有枚举成员的HashMap
来完成
基本上,这是我现在在项目中如何做的概述。扩展枚举是不可能的,但是您可以实现一个公共接口来添加额外的功能
public interface BaseLanguage {
public void doStuff();
}
public enum Language implements BaseLanguage {
English("english", "eng", "en", "en_GB", "en_US"),
// etc.
@Override
public void doStuff() {
// do work based on current Language enum
}
}
扩展枚举是不可能的,但是您可以实现一个公共接口来添加额外的功能
public interface BaseLanguage {
public void doStuff();
}
public enum Language implements BaseLanguage {
English("english", "eng", "en", "en_GB", "en_US"),
// etc.
@Override
public void doStuff() {
// do work based on current Language enum
}
}
可能的副本只能实现接口以确保兼容性,至少是.Thx-Keppil,但我已经读过了。值将不相同,只有方法仍然有效,您不能扩展
enum
s,也不能扩展任何内容。不过,如果有帮助,它可以实现一个接口
。可能的副本只能实现接口以确保兼容性,至少。Thx Keppil,但我已经读过了。值将不相同,只有方法仍然有效,您不能扩展enum
s,也不能扩展任何内容。但是,如果有帮助的话,它可以实现一个接口!虽然这看起来很复杂,但对大脑来说(我认为)有些事情很简单。我主要关心的是避免代码重复。但是,如果只有4或5个这样的枚举,我也可以复制/粘贴:我相信sI有6个枚举,拥有这种体系结构是非常值得的,因为我绝对需要对枚举成员的类型进行分派。没有其他东西可以取代这一优势,所以如果我不使用它,它将是唯一更多的代码。Thx的帮助,你肯定把我放在一个正确的轨道上。我认为从外部完成工作可能是最干净的解决方案THX Marko!虽然这看起来很复杂,但对大脑来说(我认为)有些事情很简单。我主要关心的是避免代码重复。但是,如果只有4或5个这样的枚举,我也可以复制/粘贴:我相信sI有6个枚举,拥有这种体系结构是非常值得的,因为我绝对需要对枚举成员的类型进行分派。没有其他东西可以取代这一优势,所以如果我不使用它,它将是唯一更多的代码。Thx的帮助,你肯定把我放在一个正确的轨道上。我认为从外部完成工作可能是最干净的解决方案,这就是我所需要的!这就是我需要的!