A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


通过反射可以在ArrayList<Integer> list中存入String类型对象,为什么不可以再ArrayList<String> list中存入Integer类型的对象呢?
  1. package com.itheima;

  2. import java.io.FileInputStream;
  3. import java.io.FileNotFoundException;
  4. import java.io.IOException;
  5. import java.lang.reflect.Field;
  6. import java.lang.reflect.InvocationTargetException;
  7. import java.lang.reflect.Method;
  8. import java.util.ArrayList;
  9. import java.util.Iterator;
  10. import java.util.List;
  11. import java.util.Properties;
  12. import java.util.Set;

  13. public class Test5{
  14.        
  15.         public static void main(String []args) throws IOException, ClassNotFoundException, NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, Exception{
  16.                
  17.                
  18.                 List<String> list = new ArrayList<String>();
  19.                 list.add("a");
  20.                 list.add("b");
  21.                 Class<?> cls = list.getClass();
  22.                 Method m =cls.getMethod("add", Object.class);
  23.                 m.setAccessible(true);
  24.                 m.invoke(list, new Integer(1));
  25.                 System.out.println(list.get(2));
  26.                
  27.                
  28.                
  29.                
  30.                
  31.                
  32.                
  33.         }
  34.        
  35.        
  36. }
复制代码



错误提示如下:Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String

1 个回复

正序浏览
当你输出的时候list.get(2)使用的是你自己定义String类型的get方法。如果你想得到你反射加进去的数据应该也得用反射的方法得到
  1. Method m1 =cls.getMethod("get", int.class);
  2.                 Integer a=(Integer)m1.invoke(list, 2);
  3.                 System.out.println(a);
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马