How can I eliminate duplicated Enum code?

后端 未结 15 900
眼角桃花
眼角桃花 2020-12-24 13:40

I have a large number of Enums that implement this interface:

/**
 * Interface for an enumeration, each element of which can be uniquely identified by its co         


        
15条回答
  •  旧时难觅i
    2020-12-24 13:55

    You could factor the duplicated code into a CodeableEnumHelper class:

    public class CodeableEnumHelper {
        public static CodeableEnum getByCode(String code, CodeableEnum[] values) {
            for (CodeableEnum e : values) {
                if (e.getCode().equalsIgnoreCase(code)) {
                    return e;
                }
            }
            return null;
        }
    }
    

    Each CodeableEnum class would still have to implement a getByCode method, but the actual implementation of the method has at least been centralized to a single place.

    public enum IMType implements CodeableEnum {
        ...
        public IMType getByCode(String code) {
            return (IMType)CodeableEnumHelper.getByCode(code, this.values());
        } 
    }
    

提交回复
热议问题