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