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