可能有人会说这样解决
map.put("xxx", (Class<? extends Action>) c);但问题是“(Class<? extends Action>) c”,强制转换,这不是又回到了非泛型的路了?
map.put("xxx", (Class<? extends Action>) c);但问题是“(Class<? extends Action>) c”,强制转换,这不是又回到了非泛型的路了?
调试欢乐多
package test;import java.util.HashMap;
import java.util.Map;public class Test { public static void main(String[] args) throws ClassNotFoundException { Map<String, Class<Test>> mapping = new HashMap<String, Class<Test>>(); String className = "xxx.xxx.xxx"; // 这里具体是什么并不重要 Class<?> c = Class.forName(className); mapping.put("a", c);
}
}最后mapping.put有编译错误的,怎么样调整好,不要用强制转换
import java.util.HashMap;
import java.util.Map;public class Test { public static void main(String[] args) throws ClassNotFoundException { Map<String, Class<Test>> mapping = new HashMap<String, Class<Test>>(); String className = "xxx.xxx.xxx"; // 这里具体是什么并不重要 Class<?> c = Class.forName(className); Method method=Map.class.getMethod("put",Object.class,Object.class);
method.invoke(mapping,"a",c);
System.out.println(mapping);
}
}
if (c instance of Class<Abc>) {
Class<? extends Abc> abcC = (Class<? extends Abc>) c;
mapping.put("xxx", abcC);
}