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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王红潮 中级黑马   /  2012-9-13 15:54  /  1389 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王红潮 于 2012-9-13 16:36 编辑
  1. public static void main(String[] args)
  2. {
  3. List list = new ArrayList();
  4. list.add("adfa");
  5. list.add("aaa");
  6. list.add("bbb");

  7. List<Integer> intList = list;
  8. for(int i=0;i<intList.size();i++){
  9. System.out.println(intList.get(i));
  10. }
  11. }
复制代码
正常运行打印输出,jvm会将集合中的元素当成Integer遍历打印
  1. public static void main(String[] args)
  2. {
  3. List list = new ArrayList();
  4. list.add("adfa");
  5. list.add("aaa");
  6. list.add("bbb");

  7. List<Integer> intList = list;
  8. for(int i=0;i<intList.size();i++){
  9. Integer in = intList.get(i);  //这里定义一个Integer遍历接收集合中的元素
  10. System.out.println(in);
  11. }
  12. }
复制代码
报异常,ClassCastException,String类型不能转成Integer,那么下面定义给一个String来接收
  1. public static void main(String[] args)
  2. {
  3. List list = new ArrayList();
  4. list.add("adfa");
  5. list.add("aaa");
  6. list.add("bbb");

  7. List<Integer> intList = list;
  8. for(int i=0;i<intList.size();i++){
  9. //Integer in = intList.get(i);
  10. String in = intList.get(i);  
  11. System.out.println(in);
  12. }
  13. }
复制代码
用一个带泛型的去接收一个不带泛型的集合:
依然报异常,类型不匹配,不能从字符串转换成整数,这是为什么呢?集合中的元素类型还是String类型,为什么要转换成整数呢?
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Type mismatch: cannot convert from Integer to String



1 个回复

正序浏览
下面是我的代码
public class Test {
        public static void main(String[] args)throws Exception {
                List list = new ArrayList();
                list.add(1);
                list.add(2);
                list.add(3);
                List<Integer> intList = list;
                for(int i=0;i<intList.size();i++){
                        Integer in=intList.get(i); //你想定义Integer接收集合中的元素,可集合中的元素是String类型,怎么能让Integer接收呢
                                                                  所以我把list集合中的元素改为int类型,这句话就不报异常了

                        System.out.println(in);
                }
        }
}


public class Test {
        public static void main(String[] args)throws Exception {
                List list = new ArrayList();
                list.add("adfa");
                list.add("aaa");
                list.add("bbb");
                List<String> intList = list;
                for(int i=0;i<intList.size();i++){
                        //Integer in=intList.get(i);
                        String in=intList.get(i); //如果想定义String接收集合中的元素,可intList集合时Integer反省集合,
                                                               从这个集合中取出的元素是Integer类型,所以不能用String接受intList集合中取出的元素。
                                                               想用String接受元素,把intList的泛型改成String记u不会报异常了。

                        System.out.println(in);
                }
        }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马