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" }, 
            };
}

この構造はどのように呼ばれていますか?配列仕様か何か?とにかく、変数「editable」がtrueの場合、「Edit」文字列が必要です。falseの場合、何も必要ありません...明らかに、次のような2つのreturnステートメントを記述したくありません。お互い...

4

5 に答える 5

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つずつ追加することもできます。

于 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

私があなたを正しく理解しているなら、あなたは返されたものに、 trueの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 に答える