java – 考虑出现在许多枚举中的方法

前端之家收集整理的这篇文章主要介绍了java – 考虑出现在许多枚举中的方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

参见英文答案 > 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()相同.

猜你在找的Spring相关文章