jre版本太低,怎么还在用 1.5 以前的版本。。。
不知道你这个问题是否已经解决, 如果还没有解决的话:String类是不可变字符串:String变量修改其实都是产生并指向新的字符串对象;原来的字符串对象都是没有改变的,所以称为不可变的字符串。
在其他类中,如Student name = new Student();中name是对象名,输出的是地址;但是在String类中,经过特殊化处理,输出的是内容,经过“+”连接,name执行的是新的内容。原来的字符串对象都是没有改变的。
问题的关键在于Java 1.8版本中实例化String类型的ArrayList时,<>里的String出现报错。问题出在Java 1.8之前的版本中,ArrayList的泛型只能为引用类型,不能为基本类型。所以在实例化String类型的ArrayList时,编译器无法识别<>里的String。解决这个问题的方法有两种。
方法一:使用ArrayList的add()方法逐一添加元素
ArrayList<String> list = new ArrayList<>();
list.add("Hello");
list.add("World");
方法二:使用包装类,将基本类型转换为对应的引用类型
ArrayList<Integer> list = new ArrayList<>();
list.add(Integer.valueOf(1));
list.add(Integer.valueOf(2));
以上两种方法都可以正确实例化String类型的ArrayList。无需降低Java版本来解决这个问题。