黑马程序员技术交流社区
标题: 关于泛型的问题 [打印本页]
作者: 钟伟杰 时间: 2013-4-25 02:40
标题: 关于泛型的问题
本帖最后由 钟伟杰 于 2013-4-25 10:16 编辑
import java.util.*;
public class Test
{
public static void append(List list)
{
list.add("java");
}
public static void main(String[] agrs)
{
List<Integer> list = new ArrayList<Integer>();
append(list);
System.out.println(list.get(0));
}
}
运行结果:java
定义了一个Integer类型的容器,为什么调用自定义方法时能
添加String对象呢?
作者: 沈浩 时间: 2013-4-25 03:31
你的泛型根本就没定义好嘛
public static void append(List<这里漏啦当然就没效果啦> list)
其实你在编译是就能看出 没定义泛型会有提示的
作者: smallsea 时间: 2013-4-25 05:56
import java.util.*;
public class Test
{
public static void append(List list)
{
list.add("java");
}
public static void main(String[] agrs)
{
List<Integer> list = new ArrayList<Integer>();
append(list);
System.out.println(list.get(0));
}
}
如果是要添加String类型的对象,你要泛型改为
List<String> list = new ArrayList<String>();,并且,在你的
public static void append(List list)
{
list.add("java");
},传的List list改为List<String> list,这样就会有效果了。
作者: ゞSunペ果果つ 时间: 2013-4-25 07:23
public static void append(List<Integer> list)
{
list.add("java");
}
现在你去试一试你看看会不会添加成功,你都没有限制进入函数的List类型,
当然你在进入之后输入“java”也不会发生错误,这样限制一下,才会把它的类型固定了,
现在你可以试一试了,不出意外可以限制了。
作者: 本人已死 时间: 2013-4-25 07:35
public static void append(List list)
{
list.add("java");
}
你这里出问题了,该方法不是专门为泛型集合添加元素的,泛型只是将运行时期的问题转移到编译时期,但集合本身是什么对象都能存的
作者: 袁梦希 时间: 2013-4-25 08:32
版主拎包郑重提示: {:soso_e113:} 如果楼主问题已经解决那么。在自己发表的帖子下面,点“修改”,
然后把主题的分类标记成“已解决”。就OK了
| 欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |