required java.util.ArrayList,found java.lang.Object :我不明白此错误的原因

2024-04-01

以下是 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>();

那你是说songList is an ArrayList of Objects,无论 右边是什么=。分配不会改变这一点,所以:

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

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

如果您修复了声明,那么您的for循环应如下所示:

for (String list : songList){}

Because songList是数组列表Strings。如您所见,Java 提取每个Object from songList并尝试将其分配给您在左侧声明的内容:,你已经告诉它是一个ArrayList<String>。它无法转换Object to ArrayList<String>(特别是自从Object真的只是一个String下面),所以它会抛出错误。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

required java.util.ArrayList,found java.lang.Object :我不明白此错误的原因 的相关文章

随机推荐