2

在我的遗留代码中,我有一个属性/值对的概念。

每个属性/值在我的系统中都有一些任意含义。所以,我的接口有getValue() 和setValue() 方法。这些中的每一个都根据属性在我的系统中的含义执行一些特定的业务逻辑。

这工作得很好,但我遇到了一些问题。

首先是我的映射看起来像这样:

if (name == "name1") return thisAttributeImplementation();

这是丑陋的,很容易搞砸打字......

第二个是这些 AttributeImplementation 需要知道它们的属性的名称,但除非我将其作为静态成员提供,或者将其传递给构造函数,否则它们不会,这两者都很丑陋。

似乎枚举将是解决这两个问题的好方法,但我在解决后勤问题时遇到了麻烦。为了将字符串与对象关联起来,枚举应该是什么样的?我应该如何遍历枚举以找到合适的枚举?对象本身应该如何获得与它们关联的字符串的知识?

4

1 回答 1

2

与此类似的东西是否正确?

public enum Borough {
    MANHATTAN(1),
    THE_BRONX(2),
    BROOKLYN(3),
    QUEENS(4),
    STATEN_ISLAND(5);

    private int code;

    private Borough(final int aCode) {
        code = aCode;
    }

    /**
     * Returns the borough associated with the code, or else null if the code is not that of a valid borough, e.g., 0.
     * 
     * @param aCode
     * @return
     */
    public static Borough findByCode(final int aCode) {
        for (final Borough borough : values()) {
            if (borough.code == aCode) {
                return borough;
            }
        }
        return null;
    }

    /**
     * Returns the borough associated with the string, or else null if the string is not that of a valid borough, e.g., "Westchester".
     * 
     * @param sBorough
     * @return
     */
    public static Borough findByName(final String sBorough) {

        for (final Borough borough : values()) {
            if (borough.name().equals(sBorough)) {
                return borough;
            }
        }
        return null;
    }

    public int fromEnumToInt() {
       return mId;
}


}
于 2012-11-13T20:27:59.880 回答