0

私はこれら2つの方法をほとんど同じにしています。唯一の違いは、メソッドのシグネチャです。最後のパラメーターは、オブジェクトにすることも、オブジェクトのリストにすることもできます。これらを組み合わせる方法があるように感じますが、方法がわかりません。

public Query where(String selection, String operator, Object value) {


        WhereClause clause = null;

        try {

            if (!columns.contains(selection)) {
                throw new Exception("No such field for the " + model.getClass().getSimpleName() + " model: " + selection);
            }

            clause = new WhereClause(selection, operator, value);

        } catch (Exception e) {
            clause = null;
            e.printStackTrace();
        }

        if (clause != null) {
            clauses.add(clause);
        }

        return this;
    }

    public Query where(String selection, String operator, List<Object> values) {

        WhereClause clause = null;

        try {

            if (!columns.contains(selection)) {
                throw new Exception("No such field for the " + model.getClass().getSimpleName() + " model: " + selection);
            }

            clause = new WhereClause(selection, operator, values);

        } catch (Exception e) {
            clause = null;
            e.printStackTrace();
        }

        if (clause != null) {
            clauses.add(clause);
        }

        return this;
    }
4

2 に答える 2

2
public Query where(String selection, String operator, Object value) 
{
    ArrayList<Object> list = new ArrayList<Object>();
    list.add( value );
    return where(selection, operator, list);
}

編集:

エリックのコメントを見逃した場合は、次も使用できます。

List<Object> list = Collections.singletonList(value)
return where(selection, operator, list);
于 2013-05-29T03:28:37.090 に答える
1

最初のメソッドの最後のパラメータを singleton-list でラップし (Eric Jablow の提案に従って)、メソッド 2 にすべての作業を任せることができます。

public Query where(String selection, String operator, Object value)
{
    List<Object> v = Collections.singletonList(value);

    return where(selection, operator, v);
}
于 2013-05-29T03:31:11.563 に答える