在实例化一个String类型ArrayList的时候报错

img


在实例化一个String类型ArrayList的时候,<>里面的String报错

img


报错显示我是应该降低版本么?java我用的1.8版本

jre版本太低,怎么还在用 1.5 以前的版本。。。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7655392
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:ArrayList类型转换成String类型
  • 除此之外, 这篇博客: Java基础--String类和ArrayList类中的 String类 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    • String类是不可变字符串:String变量修改其实都是产生并指向新的字符串对象;原来的字符串对象都是没有改变的,所以称为不可变的字符串。
      String对象存储图
      在其他类中,如Student name = new Student();中name是对象名,输出的是地址;但是在String类中,经过特殊化处理,输出的是内容,经过“+”连接,name执行的是新的内容。原来的字符串对象都是没有改变的。

  • 您还可以看一下 程伟鑫老师的Java进阶课程系列之ArrayList集合底层源码实战分析课程中的 ArrayList集合底层java源码分析小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    问题的关键在于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版本来解决这个问题。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^