现在有下面一段代码
ArrayList list1=new ArrayList();
ArrayList<String> list2=new ArrayList<String>();
list1=list2;
我们new了两个list集合,list1的数据类型应该是object,list2的数据类型应该是String,之后我们通过值引用将list1的引用变成了list2,那么现在list1在使用add方法时,是不是应该和list2一样只能添加String类型的数据呢。但是结果并不是我们想象的那样
通过上图我们能明显看出此时的list1使用add方法时,参数类型并不是String类型的,而是object类型。也就是说list1使用的add方法还是它原来申明的那个Arraylist数据类型,而不是ArrayList<String>。但是值引用确实是发生了,这时list2的值会随着list1变动而变动。
很无奈,后面通过Eclipse查看数据类型,发现下图
通过上图我们能看到list1在发生值引用时,其本身所属数据类型并没有发生改变,那么我猜测,集合之间的引用,变量本身的数据类型并没有发生改变,改变的只是变量所属的值空间指针,以上只是个人猜测,恳请大佬能够帮我解答一下。