6

我想知道我是否可以在这里轻松地有一个 if 语句:

public Object[] tableItemFromVisit(Visit visit, boolean editable) {
    return new Object[] {
            visit.getIdVisit(),
            visit.getProfession().getProfessionName(),
            visit.getSpiProfessional().getFullName(),
            RegularFunctions.getTimeFormat().format(visit.getVisitDate()),
            RegularFunctions.toNormalCapitalizedText(visit.getVisitState()
                    .toString()), visit.getReason(), 
            if (editable) { "Edit" }, 
            };
}

这个结构怎么叫?数组规范还是什么?无论如何,如果变量“可编辑”为真,它必须有一个“编辑”字符串,如果它是假的,它不需要任何东西......显然我不想写两个太相似的返回语句彼此...

4

5 回答 5

3

将上述数组构造为 anArrayList并返回其toArray?

这个想法的本质是做这样的事情。

ArrayList<Object> ret = new ArrayList<Object>(new Object[] {
            visit.getIdVisit(),
            visit.getProfession().getProfessionName(),
            visit.getSpiProfessional().getFullName(),
            RegularFunctions.getTimeFormat().format(visit.getVisitDate()),
            RegularFunctions.toNormalCapitalizedText(visit.getVisitState()
                    .toString()), visit.getReason()
            // don't add Edit item at all yet
            })

if(editable)
     ret.add("Edit");

return ret.toArray();

我不确定这种初始化是否有效,如果没有Arrays.toList也可以使用,或者只是一个一个添加。

于 2013-01-09T07:08:08.933 回答
2

使用提供的构造传递额外参数是不可能的。您可以通过以下方式之一修改您的代码:

尝试三元运算符

editable ? "Edit" : ""

或者

editable ? "Edit" : null

if(editable)
{
    return new Object[] {
        visit.getIdVisit(),
        visit.getProfession().getProfessionName(),
        visit.getSpiProfessional().getFullName(),
        RegularFunctions.getTimeFormat().format(visit.getVisitDate()),
        RegularFunctions.toNormalCapitalizedText(visit.getVisitState()
                .toString()), visit.getReason(), 
        "Edit" }
}
else
{
return new Object[] {
        visit.getIdVisit(),
        visit.getProfession().getProfessionName(),
        visit.getSpiProfessional().getFullName(),
        RegularFunctions.getTimeFormat().format(visit.getVisitDate()),
        RegularFunctions.toNormalCapitalizedText(visit.getVisitState()
                .toString()), visit.getReason(), 
        }
}
于 2013-01-09T07:04:51.547 回答
1

如果我理解正确,如果为真,您希望返回Object[]的具有和额外的元素。editable

这在java中是不可能的。

如果null可以在那里使用,您可以使用editable ? "Edit" : null代替if (editable) { "Edit" },但您可能已经知道这一点。

于 2013-01-09T07:03:53.253 回答
0

看起来您想像这样使用条件运算符:

editable ? "Edit" : "" (或者如果你想要它,则为 null)。

显然,它有额外的元素。

于 2013-01-09T07:06:02.460 回答
0

假设您正在尝试创建一个对象来包含有关访问的数据。为什么不想为if (editable) { "Edit" }封装创建一个函数并利用它呢?

private String getEditFeedback(boolean editable){
  if(editable){
   return "Edit";
  } else {
   return //something
  }
}

然后在你的代码中,

 public Object[] tableItemFromVisit(Visit visit, boolean editable) {
        return new Object[] {
                visit.getIdVisit(),
                visit.getProfession().getProfessionName(),
                visit.getSpiProfessional().getFullName(),
                RegularFunctions.getTimeFormat().format(visit.getVisitDate()),
                RegularFunctions.toNormalCapitalizedText(visit.getVisitState()
                        .toString()), visit.getReason(), 
               getEditFeedback(editable), 
                };
    }
于 2013-01-09T07:13:28.317 回答