是一个新特性
容器 标签
为了更严格
arrayList.add(Object) 什么都能放,没有限制,危险。
把元素的类型设计成一个参数,这个类型参数叫泛型,
boolean add(E e);
这个类型参数将在使用时确定。
数组不使用泛型下的弊端问题1:类型不安全
list.add("tom");
问题2 强转时出现classCastException
在添加时做一些检查
for(Object score:list){
int stuScore=(Integer) score;
}
564 泛型与在file中使用泛型
集合中使用泛型
泛型是类型,使用时不能使用基本数据类型。在需要使用基本数据类型时候,使用包装类替换。
优点:编译时,进行类型检查,保证数据安全,避免了强转操作。
ArrayListlist=new ArrayList (); list.add(78);
方式二:迭代器实现
Iteratoriterator=list.iterator(); while(iterator.hasNext()){ int stuScore=iterator.next(); sout(stuScore); }
HashMap使用泛型
Mapmap=new HashMap ();
//泛型嵌套
Set565 泛型练习> entry=map.entrySet();
指明后,方法的形参就发生改变
public class Employee impletements Comparable{ public int compareTo(Employee o){ return 0; } }
比较器只要声明中加上泛型,后面都可以用泛型。
566 自定义泛型类举例如果定义了泛型类,实例化没有指明类的泛型,则认为此泛型类型为Object类型。
Order order=new Order();
order.setOrderT(123);
order.setOrderT("abd");
子类继承了带泛型的父类,
public class SubOrder1extends Order { //subOrder1仍然是泛型类 }
public class SubOrder extends Order567 自定义泛型类接口注意点{ //subOrder不再是是泛型类 }
1 泛型类可能有多个参数,应将多个参宿一起放在尖括号。
4 泛型不同的引用不能相互赋值。
5 泛型不指定,将被擦除,对应的类型按object处理,但不等同;要使用,一路都使用。
8 静态方法中不能使用泛型,
reason类的泛型是造对象时候指定,实例化时候,而静态结构要早于对象的创建。
9 异常类不能是泛型。
子类保留父类泛型
568 自定义泛型接口举例什么是泛型方法
在方法中出现泛型结构,泛型参数与类的泛型参数没有任何关系,
泛型方法所属的类是不是泛型类都没有关系
泛型方法在调用时,指明泛型参数的类型,并非在实例化类时确定。
569 泛型类 泛型方法使用情景 泛型类使用只能操作student
pulbic class DAO{//操作表的共性操作dao public void add(T t){ } }
子类
public class StudentDAO extends DAO泛型方法{//只能操作某个表的dao }
//获取表中记录数,获取员工入职时间 public570 泛型在继承方面的体现E getValue(){ return null; }
//将子类对象赋值父类的引用 List571 通配符使用
没有多态,需要写很多重载方法。
为了解决上面的问题,需要找两个并列的父类,
通配符:?
public void test(){
List
小结
类A时类B的父类,G,G没有关系,二者的共同父类时G>
572 使用通配符后数据读取和写入要求除了添加null外,对于List>不能向内部加数据,
获取允许,读取的数据类型为object
Object o=list.get(0);573 有限条件通配符使用
public void test(){
List extends Person> list1=null;
List super Person> list2=null;
List list3=null;
list
理解成 super扩大范围,extends缩小范围,



