0

我有一个类,它有许多字符串类型的字段。我想编写一个方法作为所有这些字段的设置器,所以我需要一个开关。我的问题来了,如何将字段名称映射为适合开关的整数?我不想要Integer.parseInt(),因为我不知道 char 可能是什么并且无法选择合适的基数。我也不想手动构建地图。有什么好用的技巧吗?

4

4 回答 4

1

为什么不在 switch case 本身中使用字符串?您不需要为此在字符串和整数之间建立任何关系。Java 7 在内部对此进行了维护。

switch(string){
case "one":
  -- do something--
  break;
case "two":
  -- do something --
  break;
....
..

如果您真的想在字符串和整数之间保持良好而有效的关系,以便您可以在 switch 中使用它——看看使用字符串的 switch 的实现——并检查它的字节码

于 2012-08-11T08:19:23.113 回答
0

您可以使用具有 setter 和 getter 的 List。List 可以容纳任何类型的 Object。

List<Employee>  empList = new ArrayList(Employee);

    public List<Employee> getEmpList() {
            return empList;
        }


        public void setEmpList(List<Employee> empList) {
            this.empList = empList;
        }

In your Employee Class 

Employee
String firstName
String lastName
String address
int age
于 2012-08-11T08:06:03.067 回答
0

你为什么不像其他人一样将字段名称编码为方法名称而不是参数:

public void setXXX(int xxx) // sets XXX
public void setYYY(int yyy) // sets YYY
于 2012-08-11T08:23:03.100 回答
0

如果您编写一个枚举,其中成员的名称与您的输入字符串完全相同:

enum MyEnum { CASE_1, CASE_2 }

然后你可以简单地打开MyEnum.valueOf(inputString)

switch (MyEnum.valueOf(inputString)) {
  case CASE_1: setCase1Field(); break;
  case CASE_2: setCase2Field(); break;
}
于 2012-08-11T10:37:45.200 回答