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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 今生2013 中级黑马   /  2014-5-21 21:12  /  818 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 今生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方法显示的类型还是原来的?




评分

参与人数 1技术分 +1 收起 理由
天涯追梦 + 1

查看全部评分

2 个回复

倒序浏览
1.object  类型(自动封箱)
回复 使用道具 举报
本帖最后由 杨韬略 于 2014-5-21 22:23 编辑

2.调用的是object对象(拆箱)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马