java - 有没有办法缩短由于对象属性相似而重复的代码?

标签 java arraylist javafx-8 code-duplication

我有很多复选框,所有这些复选框都依赖于某个未选中的框,但如果确实选中了该框,则必须选中并隐藏该框。我知道人们一直在说 ArrayList,但是我不知道如何编辑 ArrayList 中项目的某些属性的语法。

我的代码有效,我只需要这段代码更短,因为我相信如果它继续这样运行,最终会减慢进程,我想了解这对于我拥有的其他对象是如何工作的做同样的事情。

 public void cbxSalesSelectA() {
    boolean t = cbx_SALES_Select_All.getText().equals("Select All");
    cbx_SALESQtySold.setSelected(t);
    cbx_SALESDateSold.setSelected(t);
    cbx_SALESCustomer.setSelected(t);
    cbx_SALESDiscount.setSelected(t);
    cbx_SALESLineNumber.setSelected(t);
    cbx_SALESConsultant.setSelected(t);
    cbx_SALES_Header_Row.setSelected(t);
    if (t) {
        cbx_SALES_Select_All.setText("Deselect All");
    } else {
        cbx_SALES_Select_All.setText("Select All");
    }
}
 public void cbxLOCSelectA() {
    boolean t = cbx_LOC_Select_All.getText().equals("Select All");
    cbx_LOCHeight.setSelected(t);
    cbx_LOCWidth.setSelected(t);
    cbx_LOCDepth.setSelected(t);
    cbx_LOCWeightCap.setSelected(t);
    cbx_LOCAccessibility.setSelected(t);
    cbx_LOC_Header_Row.setSelected(t);
    if (t) {
        cbx_LOC_Select_All.setText("Deselect All");
    } else {
        cbx_LOC_Select_All.setText("Select All");
    }
}

最佳答案

我不认为你真的可以提高代码的性能,但为了可读性,你可以在单独的方法中更改 selected 。例如

static void allSetSelected(boolean isSelected, CheckBox... boxes ) {
    Arrays.stream(boxes).forEach(b -> b.setSelected(isSelected));
}

并在代码中使用它,如下所示

public void cbxSalesSelectA() {
    boolean t = cbx_SALES_Select_All.getText().equals("Select All");
    allSetSelected(t, cbx_SALESQtySold,
                      cbx_SALESDateSold,
                      cbx_SALESCustomer,
                      cbx_SALESDiscount,
                      cbx_SALESLineNumber,
                      cbx_SALESConsultant,
                      cbx_SALES_Header_Row)
    if (t) {
        cbx_SALES_Select_All.setText("Deselect All");
    } else {
        cbx_SALES_Select_All.setText("Select All");
    }
}

public void cbxLOCSelectA() {
    boolean t = cbx_LOC_Select_All.getText().equals("Select All");
    allSetSelected(t, cbx_LOCHeight, cbx_LOCWidth, cbx_LOCDepth, cbx_LOCWeightCap, cbx_LOCAccessibility, cbx_LOC_Header_Row);
    if (t) {
        cbx_LOC_Select_All.setText("Deselect All");
    } else {
        cbx_LOC_Select_All.setText("Select All");
    }
}

关于java - 有没有办法缩短由于对象属性相似而重复的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57922118/

相关文章:

java - 使用 java.util.zip.* 解压缩使用 Apache POI 创建的 xlsx blob 时失败

java - 调用 2D 数组函数 '' 无法将 Double[][] 转换为 Double”错误

java - 有没有办法让系统关闭按钮作为 javafx 按钮?

javafx-2 - 如何在 JavaFX 中通过鼠标拖动调整组件大小

java - 在j2me lwuit中,使用主题组合框下拉,其他组件将隐藏

java - 无法解析 oracle.jdbc.OracleDriver

java - Java/Kotlin 中 XML 解码为对象

java - 包含 Java 中对象列表的方法

java - 删除 ArrayList Java 中的重复元素

tableview - 如何防止TableView在javaFX 8中对TableColumn重新排序?