寻找一种制作java方法的方法,如果可能的话,我写得更有效率

时间:2017-09-09 00:16:12

标签: java javafx

 private void setIsSelected() {

    if (option.equals("length")) {
        isSelectedLength.setVisible(true);
    } else {
        isSelectedLength.setVisible(false);
    }
    if (option.equals("weight")) {
        isSelectedWeight.setVisible(true);
    } else {
        isSelectedWeight.setVisible(false);
    }
    if (option.equals("temp")) {
        isSelectedTemp.setVisible(true);
    } else {
        isSelectedTemp.setVisible(false);
    }
    if (option.equals("area")) {
        isSelectedArea.setVisible(true);
    } else {
        isSelectedArea.setVisible(false);
    }
    if (option.equals("time")) {
        isSelectedTime.setVisible(true);
    } else {
        isSelectedTime.setVisible(false);
    }
}

我觉得好像有更好更清洁的方法让这个方法有效。 if else语句有效,但感觉好像我在重复自己。欢迎任何建议。

2 个答案:

答案 0 :(得分:3)

要做的一件事是在setter中使用let str= `2.3.4.5 2.44.2 2.3.4.1 2.3.3.3 3.4.2.4.5 `; console.log( str.match(/^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$/gm) );的值:

option.equals(...)

答案 1 :(得分:0)

您可以将节点放在Map<String, Node>中,以使方法的代码更短/更少重复:

Map<String, Node> nodesByString = new HashMap<>();
nodesByString.put("length", isSelectedLength);
nodesByString.put("weight", isSelectedWeight);
...
private void setIsSelected() {
    for (Node n : nodesByString.values()) {
        node.setVisible(false);
    }

    Node visibleNode = nodesByString.get(option);
    if (visibleNode != null) {
        visibleNode.setVisible(true);
    }
}