黑马程序员技术交流社区
标题:
集合框架内容的传参数疑问
[打印本页]
作者:
曹德君
时间:
2013-4-24 17:45
标题:
集合框架内容的传参数疑问
本帖最后由 曹德君 于 2013-4-25 10:15 编辑
import java.util.*;
class SingalElementDemo
{
public static void sop(Object obj)
{
System.out.println(obj);
}
public static void main(String[] args)
{
List al = new ArrayList();//建立父类引用的ArrayList
al.add("java01");
al.add("java02");
al.add("java03");
al.add("java04");
al.add("java04");
al.add("java04");
sop(al);
al=singalElement(al);
sop(al);
}
public static List singalElement(ArrayList al)//传参如果用的List类就能通过。为什么传参是ArrayList子类,就报错呢不能编译通过呢?
{
ArrayList newal = new ArrayList();
for (Iterator it = al.iterator();it.hasNext(); )
{
//
Object obj = it.next() ;
if (!newal.contains(obj))
{
newal.add(obj);
}
}
return newal;
}
}
复制代码
作者:
董波
时间:
2013-4-24 18:52
在第11行定义al为List类型,而singalElement()需要的参数为ArrayList,两者不一样啊,自然不能直接传入;执行上面的代码会在19行处报错,对吧。
有两种解决办法:
1、将singalElement()接收参数的类型改为List;
2、将19行处的代码改为al=singalElement((ArrayList)al);也就是将al强制转换为ArrayList类型,但要注意,此处的 al的实际类型必须是ArrayList才可以这样转换,要不会报错的。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2