黑马程序员技术交流社区
标题:
ArrayList的存储问题和类型转化问题
[打印本页]
作者:
今生2013
时间:
2014-5-21 21:53
标题:
ArrayList的存储问题和类型转化问题
本帖最后由 今生2013 于 2014-5-22 13:01 编辑
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方法显示的类型还是原来的?
作者:
skill20
时间:
2014-5-21 22:08
本帖最后由 skill20 于 2014-5-21 22:22 编辑
getClass是Object的方法,哪个对象调用就会显示是这个对象由哪个类new出来的。
作者:
13556793092
时间:
2014-5-21 22:33
你去看看源码或者API吧 ,我帮你截取API的add方法 boolean add(E e) ;API的add方法接受的参数是E,E就是元素的意思,这里就是说集合里添加的是元素。E表示泛型的意思,通俗的说,你存进去的是int类型 它就相当于是add(int i),存的是string就相当于add(String str) ,那么存入的元素最初是什么类型,存入集合中依旧是这个类型,不存在什么Object的问题,建议你看看泛型这些课程
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2