创建一个Id部分(StringBufferJava)

创建一个Id部分(StringBufferJava),java,Java,在此代码中: StringBuffer flux = new StringBuffer(); flux.append("[Prestation]\n") .append(createElement("Num", getNum)) .append(createElement("Code",getCode())) .append("[IR]\n") .append(createElement("Coefficient",getCoefficient()))

在此代码中:

StringBuffer flux = new StringBuffer(); 
flux.append("[Prestation]\n")
    .append(createElement("Num", getNum))
    .append(createElement("Code",getCode()))

    .append("[IR]\n")
    .append(createElement("Coefficient",getCoefficient()))
    .append(createElement("Quantite",getQuantite())).toString();
有两个部分(预存、IR)。因此,只有在之前设置了元素(CreateElement)时,才会创建该元素。 问题是,我只想在该节包含元素时打印该节的标题。例如,设置了仅打印IR系数


我该怎么做?有人能帮我吗?

简单拆分命令并添加条件:

StringBuffer flux = new StringBuffer(); 

            flux.append("[Prestation]\n")
            .append(createElement("Num", getNum))
            .append(createElement("Code",getCode()));
 if (getCoefficient() != null) {
            flux.append("[IR]\n")
            .append(createElement("Coefficient",getCoefficient()))
            .append(createElement("Quantite",getQuantite()))
}
flux.toString();

我认为在创建对象状态的描述性字符串(通常在
toString
中完成)时“创建”东西是个坏主意。这可能是一个命名问题(
createElement
是否只是将值格式化为
字符串
?)。忽略这一点,让我们继续

首先请注意,方法链接只是一系列调用的简写:

flux.append("[Prestation]\n");
flux.append(createElement("Num", getNum()));
flux.append(createElement("Code",getCode()));

flux.append("[IR]\n");
flux.append(createElement("Coefficient",getCoefficient()));
flux.append(createElement("Quantite",getQuantite()));
从这里可以提取变量(为了简洁起见,我将在一节中这样做):

现在,您可以应用一个条件来确定该节是否存在:

Object num  = getNum();
Object code = getCode();
if (num != null && code != null) {
    flux.append("[Prestation]\n");
    flux.append(createElement("Num", num));
    flux.append(createElement("Code", code));
}

添加条件?您可以在需要时
append
StringBuffer,而不需要在一条语句中执行此操作(
flux.append().append().append();
)。您可以简单地
flux.append()
然后添加一个条件以添加其余的
if(condition)flux.append()
Object num  = getNum();
Object code = getCode();
if (num != null && code != null) {
    flux.append("[Prestation]\n");
    flux.append(createElement("Num", num));
    flux.append(createElement("Code", code));
}