1


1

クラスまたはコレクションのいずれかを取ることができる汎用Java 5メソッド?

メソッドにXMLデータを作成するロジックがあります。 XMLデータは、ArrayListまたはModelClassから構築されます。 これらの両方について、XMLを構築するロジックはまったく同じです。 現在、これを処理するための2つの個別のメソッドがあり、コードの重複があります。 コレクションまたはクラスをパラメーターとして取ることができる1つの単一メソッドを使用したいと思います。 出来ますか? これを最適化する他の方法を考える必要がありますか? ご協力いただきありがとうございます。

2 回答


2


2つのメソッドを1つの private`メソッドにリファクタリングし、 Object`引数または実際に期待されるグローバルタイプを取得し、両方の `public`メソッドがそれを呼び出すようにします。 E.g.

public void doStuff(Class<?> c) {
    doGenericStuff(c);
}

public void doStuff(Collection<?> c) {
    doGenericStuff(c);
}

private void doGenericStuff(Object c) {
    // Do whatever you did in each of the original methods.
}

または多分これも可能です(メソッドが何をするべきか、そして彼らが何を期待する「グローバルタイプ」なのか私には分かりません)。

public void doStuff(Class<?> c) {
    doStuff(Collections.singleton(c));
}

public void doStuff(Collection<?> c) {
    // Do whatever you did in the original method.
}


0


コレクションを受け入れる1つのメソッドを作成してから、コレクションを反復処理し、各アイテムを処理してください。 この方法では、多くのコレクションまたは1つのアイテムのコレクションでメソッドを呼び出すことができます。これらはすべて同じ方法で処理されます。

これは、単一のアイテムの場合にコレクションを作成する必要があるため、メソッドの呼び出し側の不便さを相殺することを前提としています。 それが懸念される場合は、2つのメソッドを作成し、コレクションを受け入れるメソッドに、単一の値を選択するメソッドを呼び出して、実装が共有されるようにする必要があります。