问题描述
如下,我定义了一个方法:public static List<?> convert(Map dc, Class<?> classType){List<?> l = new ArrayList<Class<?>>();try {Object co = classType.newInstance();l.add(co);} catch (InstantiationException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();}return l;}我要实现的目的是,将map里的key value转成一个有get,set方法的bean, 我这里没有列出具体的实现,问题是在转型上,怎么能够动态定义那个co的类型就是classType并可以加到l中去呢? 现在l.add(co)是不能编译通过的。
解决方案
可以改成:public static <T> List<T> convert(Map dc, Class<T> classType){ List<T> l = new ArrayList<T>(); try { T co = classType.newInstance(); l.add(co); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } return l; } 不过你这里有必要用到泛型吗?
解决方案二:
这样行不:if(co instanceof classType){ l.add(co);}