我有一个类,它有许多String类型的字段。我想写一个方法作为所有这些字段的setter,所以我需要一个开关。这是我的问题,如何将字段名称映射到一个整数以适应交换机?我不想要Integer.parseInt()
,因为我不知道char可能是什么,也无法选择合适的基数。我也不想手动构建地图。有没有方便的技巧?
答案 0 :(得分:1)
为什么不在开关盒中使用字符串?您不需要在字符串和整数之间使用make任何关系。 Java 7在内部维护这一点。
switch(string){
case "one":
-- do something--
break;
case "two":
-- do something --
break;
....
..
如果你真的想在字符串和整数之间保持良好有效的关系,那么你可以在switch中使用它 - 看一下使用字符串的switch的实现 - 并检查它的字节码
答案 1 :(得分: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
答案 2 :(得分:0)
为什么不执行其他人所做的事情,并将字段名称编码为方法名称而不是参数:
public void setXXX(int xxx) // sets XXX
public void setYYY(int yyy) // sets YYY
答案 3 :(得分:0)
如果您编写枚举,其成员的名称与输入字符串完全相同:
enum MyEnum { CASE_1, CASE_2 }
然后您只需打开MyEnum.valueOf(inputString)
:
switch (MyEnum.valueOf(inputString)) {
case CASE_1: setCase1Field(); break;
case CASE_2: setCase2Field(); break;
}