私は、製品の工場を作るための同様のクラスを持っている:パラメータ化されたメソッドを作成するにはどうすればよいですか?
package com.nda.generics;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import com.nda.generics.Sizeable.Size;
public class ProductFactory{
private Collection<? extends Sizeable> sources;
public ProductFactory(Collection<? extends Sizeable> sources) {
this.sources=sources;
}
public void setSources(Collection<? extends Sizeable> sources) {
this.sources=sources;
}
public Collection<Product> makeProductList() {
Collection<Product> products=new ArrayList<Product>();
for (Sizeable item:sources) {
switch(item.getSize()) {
case BIG: products.add(new Sausage()); break;
case MIDDLE: products.add(new Feets()); break;
case LITTLE: products.add(new Conservative()); break;
}
}
return products;
}
public class Conservative extends Product {
private Conservative(){}
}
public class Feets extends Product {
private Feets(){}
}
public class Sausage extends Product {
private Sausage(){}
}
}
この工場は、動物の大きさを利用した製品のリストを作ります。しかし、私はまた、メソッド/クラスをパラメーター化して、新しいタイプのFeets(コンストラクターのパラメーターを使用)を使用するために、製品のタイプを設定する必要があります。どうしたらいいですか?ありがとうございました。
私はあなたを助けることができるように感じるが、私はあなたの質問を理解していない。あなたのコンストラクタのパラメータは表示されません。あなたがそれらを事前に知っていれば、あなたは単にあなたの工場からそれらを渡すことができます。パラメータを事前に知らなければ、クラス引数を渡すことによって、実行時にどの型かを知らせる必要があります。 –