1 public static void main(String[] args) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException { 2 //定义一个String类型的list1的集合 3 4 List<String> list1=new ArrayList<String>(); 5 //定义一个Integer类型的list2的集合 6 7 List<Integer> list2=new ArrayList<Integer>(); 8 System.out.println(list1.getClass()==list2.getClass());12 //通过反射来向一个Integer类型的list2集合中加入一个“abc”字符串 13 list2.getClass().getMethod("add", Object.class).invoke(list2, "abc"); 14 list2.add(2); 15 list1.getClass().getMethod("add", Object.class).invoke(list1, 1); 16 list1.add("ab"); 17 18 for(Iterator<Integer> it=list2.iterator();it.hasNext();){ 19 System.out.print(it.next()+" "); 20 } 21 System.out.println(); 22 //????类型转换异常26 for (String s : list1) { 27 System.out.print(s+" "); 28 } 29 30 }
如上述程序 为什么向一个Integer的集合中添加一个String类型的可以,而反过来就会报类型转换异常呢?
反射抛出异常:
无非就是2种情况,要么数据库对应的实体没有对应,要么就是实体对象多了