在Java中构建字符串和整数之间关系的任何优雅方法?

时间:2012-08-11 08:01:22

标签: java

我有一个类,它有许多String类型的字段。我想写一个方法作为所有这些字段的setter,所以我需要一个开关。这是我的问题,如何将字段名称映射到一个整数以适应交换机?我不想要Integer.parseInt(),因为我不知道char可能是什么,也无法选择合适的基数。我也不想手动构建地图。有没有方便的技巧?

4 个答案:

答案 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;
}