黑马程序员技术交流社区

标题: ArrayList的存储问题和类型转化问题 [打印本页]

作者: 今生2013    时间: 2014-5-21 21:12
标题: ArrayList的存储问题和类型转化问题
本帖最后由 今生2013 于 2014-5-21 21:54 编辑

class GenericDemo
{
        public static void main(String[] args)
        {
                ArrayList al = new ArrayList();

                al.add("abc01");
                al.add("abc0991");
                al.add("abc014");
                al.add(4);  //al.add(new Integer(4));

               System.out.println(al.get(0).getClass());
               System.out.println(al.get(3).getClass());

        
                Iterator<String> it = al.iterator();
                while(it.hasNext())
                {
                        String s =(String)it.next();

                        System.out.println(s+":"+s.length());
                }
        }
}

个人认为:ArrayList类里的add()方接受的是Object类型,对象添加进去的时候被转化成Object类型,那为什么调用getClass方法显示的类型还是原来的?
Student stu = new Student();
System.out.println(stu.getClass());
               
Person per = stu;
System.out.println(per.getClass());

再则我把对象类型转换后调用getClass方法显示的类型也还是原来的?求解

问题:
1.存储在ArrayList的对象是原有类型,还是Object类型?
2.为什么调用getClass方法显示的类型还是原来的?





作者: 杨韬略    时间: 2014-5-21 22:20
1.object  类型(自动封箱)
作者: 杨韬略    时间: 2014-5-21 22:22
本帖最后由 杨韬略 于 2014-5-21 22:23 编辑

2.调用的是object对象(拆箱)




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2