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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 know 于 2011-11-6 14:22 编辑
  1. public static void main(String[] args) throws Exception {
  2.                         ArrayList<String> lists = new ArrayList<String>();
  3.                         lists.add("wei");
  4.                         lists.add("xiaoming");
  5.                         lists.getClass().getMethod("add",Object.class).invoke(lists,3);
  6.                         System.out.println(lists.get(2));
  7.                        
  8.                         ArrayList<Integer> collection = new ArrayList<Integer>();
  9.                         collection.add(1);
  10.                         collection.getClass().getMethod("add", Object.class).invoke(collection,"abc");
  11.                         System.out.println(collection.get(1));
  12.                        
  13.                 }
复制代码
为什么我不能将Integer类型的数据加到String类型的集合中去呢?
将String类型的数据却可以顺利加入到Integer类型的集合中呢?
问题出在哪里呢?????

评分

参与人数 1技术分 +1 收起 理由
杨玉揆 + 1

查看全部评分

1 个回复

倒序浏览
把这句System.out.println(list1.get(0)); 换成
Object obj=list1.get(0);
System.out.println(obj);
就不会出错了。
往String类型集合中存入Integer类型数据后,取出时将它们转换成公有的Object类
原因:执行System.out.println(list.get(0));时内部调用了String.valueof(obj)方法,
      而执行System.out.println(list1.get(0));这句时,由于List指定的是String类型,它便直接输出了,因此报错java.lang.ClassCastException:   java.lang.Integer cannot be cast to java.lang.String

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马