通过逐步增加变量名称并将它们与Java中的某个值进行比较来进行搜索

时间:2015-10-07 03:29:46

标签: java

我有多个变量名为label1,label2等(所有字符串),我想知道是否有办法迭代所有这些变量(最多为label9)以检查它们是否与某个字符串" x&# 34;或" o"。到目前为止,我所能做的就是要有多个if语句来检查它们,或者将它们全部放入一个数组中并以这种方式检查它们。感谢。

1 个答案:

答案 0 :(得分:0)

编号变量意味着您应该实际使用数组或列表。 然后label1变为label[1]label.get(1),您可以轻松进行迭代。

但如果你真的想要,你可以使用反射:

String label1 = "foo";
String label2 = "bar";
String label3 = "x";

private void printAll() {
    for (Field f : this.getClass().getDeclaredFields()) {
        if (f.getName().matches("label[1-9]")) {
            try {
                String value = (String) f.get(this);
                if (value.equals("x")) {
                    System.out.println(f.getName() + " is x");
                }
            } catch (IllegalArgumentException | IllegalAccessException e) {
                e.printStackTrace();
            }
        }
    }
}

http://ideone.com/KQf9uO