黑马程序员技术交流社区
标题:
关于Java泛型中的一个问题?
[打印本页]
作者:
党传才
时间:
2012-3-27 11:18
标题:
关于Java泛型中的一个问题?
各位大师帮忙解决下面代码中提问的问题,小菜我将感激不尽!
import java.util.*;
public class Student {
void func(List<? extends String> list){
list.add("huajielobn"); //为什么会报错?
list=new ArrayList<String>(); //为什么不报错?
list=new ArrayList<Object>(); //为什么会报错?
Object o=list; //为什么不报错?
}
}
作者:
田啸
时间:
2012-3-27 12:36
本帖最后由 田啸 于 2012-3-27 12:38 编辑
1. String类不能被继承,因为它是final的。 看下API中的定义:public final class String
2. List<? extends B> list ,这种用法中 ,list只能接收B类或者B类的子类:因此
list=new ArrayList<String>(); 不会报错
list=new ArrayList<Object>(); //Object是 String的父类 所以会报错
3 Object o = list; 这里是向上转型, Object是所有类的父类,所以不会报错
作者:
李井山
时间:
2012-3-27 12:48
<? extends String>说明list的泛型是String或其子类,String 是final的,无子类,所以只能是String
任何对象都可当作Object
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2