参见英文答案 > Enums shared static look-up method 2个
我有几个带有name属性的枚举和一个byname方法,对于所有这些都大致相同:
public static Condition byname(String name) throws NotFoundException { for (Condition c : values()) { if (c.name.equals(name)) { return c; } } throw new NotFoundException("Condition with name [" + name + "] not found");}
由于byname方法在不同的枚举中重复,我想将它分解在一个地方并避免重复的代码.
然而:
>枚举不能扩展抽象类
> Java8接口使用默认方法无法访问values()方法
我知道这可能是用AspectJ完成的,但是我宁愿不为这样简单的东西引入编译时编织,而Spring AOP(我手边有这个是Spring项目)只允许绑定现有的方法和不添加新的.
任何其他可行的解决方案,为枚举添加常用方法?
最佳答案这是我在同样情况下所做的事情:public interface EnumWithnames { String getname(); static
当我需要通过名字找到枚举值时,我打电话给:
Condition c = EnumWithnames.byname(Condition.class,"name 1");
注意cls.getEnumConstants()与values()相同. 总结
以上是内存溢出为你收集整理的java – 考虑出现在许多枚举中的方法全部内容,希望文章能够帮你解决java – 考虑出现在许多枚举中的方法所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)