当前位置: 首页 > 面试题库 >

必需的java.util.ArrayList,找到java.lang.Object:我不明白此错误的原因

蒋星驰
2023-03-14
问题内容

以下是jsp页面中的一些片段:

<%! ArrayList songList = new ArrayList<String>(); %>

    <%
        songList = StoreSongLink.linkList;
        // linkList is a static variable in the class StoreSongLink
        // There the linkList is defined as public static ArrayList<String> linkList = new ArrayList<String>();
    %>

<%}  else {
       for (ArrayList<String> list : songList){}

%>

else srciplet中的代码会产生错误required java.util.ArrayList<String> found java.lang.Object。为什么是这样 ?我不明白原因。

为什么编译器说songList是Object类型的?


问题答案:

您应该在一开始就明确声明它:

ArrayList<String> songList = new ArrayList<String>();

如果您这样声明:

ArrayList songList = new ArrayList<String>();

然后你说songListArrayListObjectS,不管是什么来的右侧=。分配不会更改,因此:

ArrayList songList = new ArrayList<String>();
songList = StoreSongLink.linkList;

不会改变类型songList,它仍然有效ArrayList<Object>

如果修复了声明,则for循环应如下所示:

for (String list : songList){}

因为songList是的数组列表String。有了它,Java
Object将从中提取每个元素,songList并尝试将其分配给您在左侧声明的内容:,您将其称为ArrayList<String>。它不能将转换ObjectArrayList<String>(特别是因为Object确实只是在String下面),因此会引发错误。



 类似资料:
  • 错误(25,1):PLS-00103:遇到符号“EXEC” 放下桌上的学生;提交;

  • 我对Android-Studio是新手,我正试图让一个“旧”应用程序重新运行。当我将Project与Gradle文件同步时,它会向我显示一条错误消息: 我还将google()和mavenCentral()添加到存储库中,但这并没有帮助。

  • 问题内容: 错误: 出现的内容不起作用: 如果我写:“ InvoerVakhandler扩展了boven”,则该错误消失了,但是随后我得到了一个无限循环,最后程序崩溃并说堆栈溢出错误。 如果我尝试更改boven类中的“}”符号并将其放置在文本的末尾,那么我什至会收到更多错误消息。 问题: 我必须在代码中进行哪些更改才能使其正常工作? 注意: 我是Java的新手,我知道有更多类似这样的文章,但是由于

  • 问题内容: 我正在尝试在Mac OS X 10.8.3上安装virtualenv和/或virtualenvwrapper 最近两天我一直在和python战斗。最终,我能够使用brew安装python 2.7.4。在我使用easy_install安装virtualenv之前。然后,我尝试将其卸载,以使我的计算机处于与我的一位同事相同的状态。也许我成功卸载了它,也许没有成功。我不知道如何测试。现在我应

  • 我需要改变复选框检查状态,但useCallback重新呈现组件很多次。我不明白它是如何工作的。我读过很多关于它的材料。 重新渲染的数量:

  • 我正在Celero git存储库中检查DoNotOptimizeAway的含义。但我还是不明白。请你用外行的话帮我理解一下好吗。尽你所能。