我有一个对象列表。这个 list 很大。所有值都是字符串。目前我正在为每个循环执行 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();
}
使用新的不同方法进行编辑:
如果您不限于字符串列表,您可以使用另一种方法。
定义一个接口(interface)Worker
public interface Worker {
public void work();
}
定义n个实现Worker
的类
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 循环非常简单且易于阅读。必须在实现 Worker
接口(interface)的每个类中读取 work()
方法的具体实现。
关于java - 在 Java 中获取列表内的字段详细信息,而无需大的 if else 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31161059/