私のアプリケーションは投げています
java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType
このコードの場合:
public class DsMap<K,V> implements Map<K, V>{
protected Class<K> kClazz;
protected Class<V> vClazz;
// Called during DS.getMap(mapName) method
public DsMap(String name) {
ParameterizedType genericSuperclass = (ParameterizedType) getClass().getGenericSuperclass();
Type typeK = genericSuperclass.getActualTypeArguments()[0];
Type typeV = genericSuperclass.getActualTypeArguments()[1];
if (typeK instanceof Class) {
this.kClazz = (Class<K>) typeK;
} else if (typeK instanceof ParameterizedType) {
this.kClazz = (Class<K>) ((ParameterizedType)typeK).getRawType();
}
if (typeV instanceof Class) {
this.vClazz = (Class<V>) typeV;
} else if (typeV instanceof ParameterizedType) {
this.vClazz = (Class<V>) ((ParameterizedType)typeV).getRawType();
}
}
}
私が達成しようとしているのは、実行時にクラス名K
を取得することです:V
これを行うなど:
Map<String,String> dsMap = DS.getMap(mapName);
andjava.lang.String
のクラス名を取得するか、パラメーター化されたクラス名を取得します ( and をインスタンス化せずに)kClazz
vClazz
Class<K>
Class<V>
私のコードで何が間違っている可能性がありますか?