以下是 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 Object
s,无论 右边是什么=
。分配不会改变这一点,所以:
ArrayList songList = new ArrayList<String>();
songList = StoreSongLink.linkList;
不改变类型songList
,仍然有效ArrayList<Object>
.
如果您修复了声明,那么您的for
循环应如下所示:
for (String list : songList){}
Because songList
是数组列表String
s。如您所见,Java 提取每个Object
from songList
并尝试将其分配给您在左侧声明的内容:
,你已经告诉它是一个ArrayList<String>
。它无法转换Object
to ArrayList<String>
(特别是自从Object
真的只是一个String
下面),所以它会抛出错误。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)