私はジェネリックを正しく理解しようとしており、非常に単純なファクトリを作成しましたが、これら 2 つの警告を回避する方法がわかりません (私はよくうろつきましたが、おそらく私は正しい条件)。おー!警告を単に抑制したくはありません - これを適切に行うことができるはずだと確信しています。
- 型の安全性: コンストラクター simpleFactory(Class) は生の型 simpleFactory に属します。ジェネリック型 simpleFactory への参照はパラメータ化する必要があります
- simpleFactory は生の型です。ジェネリック型 simpleFactory への参照はパラメータ化する必要があります
これを解決しようとしたすべての構成は、実際にはコンパイルに失敗します - これは私が得ることができる最も近いもののようです。警告を生成するのは ++++ とマークされた行です (Android プロジェクトの Eclipse Indigo で)
優れたオブジェクト ファクトリがいくつかあることは認識していますが、これは実際にファクトリを作成することではなく、言語を理解することに関するものです ;)
ソースは次のとおりです。
import java.util.Stack;
public class simpleFactory<T> {
private Stack<T> cupboard;
private int allocCount;
private Class<T> thisclass;
public static simpleFactory<?> makeFactory(Class<?> facType) {
try {
facType.getConstructor();
} catch (NoSuchMethodException e) {
return null;
}
+++++ return new simpleFactory(facType);
}
private simpleFactory(Class<T> facType) {
thisclass = facType;
cupboard = new Stack<T>();
}
public T obtain() {
if (cupboard.isEmpty()) {
allocCount++;
try {
return thisclass.newInstance();
} catch (IllegalAccessException a) {
return null;
} catch (InstantiationException b) {
return null;
}
} else {
return cupboard.pop();
}
}
public void recycle(T wornout) {
cupboard.push(wornout);
}
}