Class的泛型问题 可能有人会说这样解决map.put("xxx", (Class<? extends Action>) c);但问题是“(Class<? extends Action>) c”,强制转换,这不是又回到了非泛型的路了? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <? extends Abc>> 表示一个泛型,这个泛型为Abc的子类或者为其本身(Abc)类型。 public class TestG<T extends Abc> { Map<String,T> map = new HashMap<String,T>();这样不就可以了 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有编译错误的,怎么样调整好,不要用强制转换 由于泛型的编译期检查,如果不进行强制转换用平常的这样的写法是无法通过编译的。我们可以利用java泛型的只在编译期做检查的特点只要我们让编译器无法检查就行了,这种时候不用强转使用反射来调用put是最好的。package test;import java.lang.reflect.Method;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);} 关于使用java做一个模拟聊天程序qq的疑问? 需要反射来执行一个带有Main方法的类,而这个Main方法还有需要对控制台的输入进行处理 java awt 编程中相对路径问题 接口对象可以做参数进行传递吗? 菜鸟请教 如何实现ProgressBar随进度颜色改变 问个arraylist用clone方法的问题 怎样从一个文件中读出内容,再写到zip压缩? 100分求热心人,请问怎样使一副图像在指定大小panel内显示??? 一篇有关Java集合代码,一看好像明白,越看越懵,求大神给细细讲解下。 运行竟然只有窗口 没看到图形 求助JAVA如何连接SQL server2012
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);
}