在 Java 中获取没有大 if else 条件的列表中的字段详细信息

Get field details inside list without large if else condition in Java

我有一个对象列表。名单很大。所有的值都是字符串。目前我正在为每个循环做 if 条件。但是可读性不会很好,会变得冗长。以下是代码片段:

List<Fields> fieldList = <(device,value),(quantity,value),(position,value),(note,value),(model,value),(lotNumber,value)...>;    
for(Fields fl : fieldList)
{
 if(fl.name.equals("device"))
  doSomething1();
else if(fl.name.equals("quantity"))
 doSomething2();
//This goes on
}

请提出更好的方法。 注意:时间不是一个因素。

从 java 7 开始,您还可以将 switch case 语句与 String 一起使用。 您还可以对不同的条件进行分组(如以下代码中的“device”和“anotherDevice”):

...
switch (f1.name) {
    case "device":
    case "anotherDevice":
        doSomething1();
        break;
    case "quantity":
        doSomething2();
        break;
    default:
        doSomething3();
}

使用新的不同方法编辑: 如果您不限于 String 列表,则可以使用另一种方法。 定义接口 Worker

public interface Worker {
    public void work();
}

定义实现 Worker

的 n classes
public class PrintWorker implements Worker {
    public void work() {
        System.out.println("Print something");
    }
}

public class AnotherPrintWorker implements Worker {
    public void work() {
        System.out.println("A different action here");
    }
}

使用 Worker

类型的对象创建列表
List<Worker> workers = new ArrayList<Worker>();
...
workers.add(new PrintWorker());
workers.add(new AnotherPrintWorker());
...
for (Worker worker : workers) {
    worker.work();
}

正如您在本例中看到的,for 循环非常简单易读。 work() 方法的特定实现必须在实现 Worker 接口的每个 class 中阅读。