「Generics(=汎用型)」って素晴らしい Part2

初歩的なGenericsの使用方法は分かってたつもりがEclipseの警告が消えなくて「Generics Tutorial」をちゃんと読んでみました(^^;)こう書けば型安全になるのね・・・。


public interface ConfigParser {
T getConfig();
}

public class XXXConfigParser implements ConfigParser {
public XXXConfig getConfig() {
return new XXXConfig();
}
}

こんなことも分かってないなんてごめんなさい(つД`)
やっぱり理解できてないな・・・
XXX xxx = (XXX)Class.forName("XXXクラス名").newInstance()でインスタンス生成した際に、「型の安全性: capture-of ? から T へのキャストは、実際には消去された型 XXX に対してチェックを行います。」の警告が取れないので、あぁ、理解不足 orz
これ自体書き方とか設計間違ってるのかな((((ΦωΦ))))なんとかして警告無くしたいんですが・・・
Configインタフェースを実装したAConfigやBConfigが存在します。

public class ConfigMgr {
Map configMap;

public ConfigMgr() {
String[] classNames = {"AConfig", "BConfig"};
configMap = new HashMap();
for(String className : classNames) {
Config config = (Config)Class.forName().newInstance();
configMap.put("Config", config);
}
}

public getConfig(Class clazz) {
T retConfig = null;
Set configKeySet = configMap.keySet();
for(String key : configKeySet) {
Config config = configMap.get(key);
if(clazz.isInstance(config)) {
retConfig = (T) config; // ここが警告になってしまう。
break;
}
}
}
}