栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java基础--泛型

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java基础--泛型

563 为什么使用泛型

是一个新特性

容器 标签

为了更严格

arrayList.add(Object) 什么都能放,没有限制,危险。

把元素的类型设计成一个参数,这个类型参数叫泛型,

boolean add(E e);

这个类型参数将在使用时确定。

数组不使用泛型下的弊端

问题1:类型不安全

list.add("tom");

问题2 强转时出现classCastException

在添加时做一些检查

for(Object score:list){
    int stuScore=(Integer) score;
}
564 泛型与在file中使用泛型

集合中使用泛型

泛型是类型,使用时不能使用基本数据类型。在需要使用基本数据类型时候,使用包装类替换。

优点:编译时,进行类型检查,保证数据安全,避免了强转操作。

ArrayList list=new ArrayList();
list.add(78);

方式二:迭代器实现

Iterator iterator=list.iterator();
while(iterator.hasNext()){
    int stuScore=iterator.next();
    sout(stuScore);
}

HashMap使用泛型

Map map=new HashMap();

//泛型嵌套

Set> entry=map.entrySet();
565 泛型练习

指明后,方法的形参就发生改变

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 SubOrder1 extends Order {
    //subOrder1仍然是泛型类
}
public class SubOrder extends Order {
    //subOrder不再是是泛型类
}
567 自定义泛型类接口注意点

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
    
}
泛型方法
//获取表中记录数,获取员工入职时间
public  E getValue(){
    return null;
}
570 泛型在继承方面的体现
//将子类对象赋值父类的引用

List list1=null;
List list2=null;
list1=list2;//不成立,不具备子父类关系,二者并列关系
 
571 通配符使用 

没有多态,需要写很多重载方法。

为了解决上面的问题,需要找两个并列的父类,

通配符:?

public void test(){
    
    List list1=null;
    List list2=null;
    
    List list=null;
    
    list=list1;
    list=list2;
}
 
小结 

类A时类B的父类,G,G没有关系,二者的共同父类时G

572 使用通配符后数据读取和写入要求

除了添加null外,对于List不能向内部加数据,

获取允许,读取的数据类型为object

Object o=list.get(0);
573 有限条件通配符使用
public void test(){
    
    List list1=null;
    List list2=null;
    
    List list3=null;
    list list5=null;
    
    list1=list5;//不成立
    //就是范围比较
    
}
 

理解成 super扩大范围,extends缩小范围,

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号