Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果可能的话,我正在寻找一种使我编写的java方法更高效的方法_Java_Javafx - Fatal编程技术网

如果可能的话,我正在寻找一种使我编写的java方法更高效的方法

如果可能的话,我正在寻找一种使我编写的java方法更高效的方法,java,javafx,Java,Javafx,我觉得似乎有一种更好更干净的方法可以让这种方法发挥作用。if-else语句有效,但感觉好像我在重复自己。欢迎任何建议。要做的一件事是使用选项的值。在setters中等于(…): private void setIsSelected() { if (option.equals("length")) { isSelectedLength.setVisible(true); } else { isSelectedLength.setVisible(f

我觉得似乎有一种更好更干净的方法可以让这种方法发挥作用。if-else语句有效,但感觉好像我在重复自己。欢迎任何建议。

要做的一件事是使用
选项的值。在setters中等于(…)

 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);
    }
}

您可以将节点放置在
映射中
,以缩短方法的代码/减少重复性:

isSelectedLength.setVisible(option.equals("length"));
isSelectedWeight.setVisible(option.equals("weight"));
isSelectedTemp.setVisible(option.equals("temp"));
isSelectedArea.setVisible(option.equals("area"));
isSelectedTime.setVisible(option.equals("time"));

您可以使用case语句或hashmap将选项及其值映射到选项处理程序。这个问题的正确答案取决于知道什么是
选项以及当前的类是什么。有人知道我被否决了什么吗,我甚至可以向上投票lol。有些人对stackoverflow非常敏感
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);
    }
}