在我的遗留代码中,我有一个属性/值对的概念。
每个属性/值在我的系统中都有一些任意含义。所以,我的接口有方法getValue()和setValue()。其中每个都基于属性在我的系统中的含义来做一些特定的业务逻辑。
这很有效,但我遇到了一些问题。
首先是我的映射看起来像这样:
if (name == "name1") return thisAttributeImplementation();
这是丑陋的,很容易搞砸...
第二个是这些AttributeImplementations需要知道它们的属性的名称,但除非我将它作为静态成员提供,或者将它传递给构造函数,否则它们都不会。这两个都是丑陋的。
对于这两个问题来说,枚举似乎是一个很好的解决方案,但我在制定物流方面遇到了麻烦。为了将字符串与对象相关联,枚举应该是什么样的?我应该如何遍历枚举以找到合适的枚举?对象本身应如何获得与其相关联的字符串的知识?
答案 0 :(得分: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;
}
}