java - 在 Java 中获取列表内的字段详细信息,而无需大的 if else 条件

标签 java list if-statement readability

我有一个对象列表。这个 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/

相关文章:

JavaFX 从 DatePicker 中提取日历弹出窗口/仅显示弹出窗口

java - 本地 Maven 存储库

javascript - 如果元素在 javascript/jquery 中可见,则更改变量

JavaScript : loop in conditional based on array

java - Java 中的列表列表列表列表列表

javascript "less than"如果语句失败

java - BigDecimal 最佳编码比例

java - Java 中使用子构造函数初始化父类,理论上

list - 从列表中形成随机对(有点......)

python - 在Python中使用map处理对象列表