问题:
比如
final Map map =new HashMap();
可以往map里put数据
final List list =new ArrayList();
可以往list里add数据
但是
final String s =“123”;
然后s就不可修改数据了
解答
final List<String> list = new ArrayList<String>();
List<String> list1 = new ArrayList<String>();
List<String> list2 = new ArrayList<String>();
list1 = list2;
list = list1;//这行是不能通过编译的
list定义为final是指该引用是final啦,但是list里面的值不是final的,所以可以修改。
对List或map的add或put操作,没有修改引用。而对字符串的修改,是整个引用都要指向一个不同的字符串了。
final 只是表示引用不可以修改,
如果你先写
final Map map =new HashMap();
再写
map =new HashMap();
同样会报错