我想知道我是否可以在这里以某种方式轻松获得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" },
};
}
这个结构怎么称呼?数组规范还是什么? 无论如何,如果变量“editable”为真,它必须有一个“编辑”字符串,如果它是假的,它不需要任何东西...... 显然我不想写两个彼此太相似的return语句......
答案 0 :(得分:3)
将上述数组构造为ArrayList
并返回其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
也可以使用,或者只是逐个添加。
答案 1 :(得分:2)
使用提供的构造传递额外参数是不可能的。您可以通过以下方式之一修改代码:
editable ? "Edit" : ""
OR
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(),
}
}
答案 2 :(得分:1)
如果我理解正确,那么如果Object[]
为真,您希望返回的editable
具有额外元素。
这在java中是不可能的。
如果null
可以在那里使用,您可以使用editable ? "Edit" : null
代替if (editable) { "Edit" }
,但您可能已经知道了。
答案 3 :(得分:0)
看起来你想要像这样使用条件运算符:
editable ? "Edit" : ""
(如果您希望这样,则为null)。
显然,它有额外的元素。
答案 4 :(得分: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),
};
}