Java学习15 泛型

泛型

泛型,Gernerics,本质是将原本确定不变的数据类型参数化,可提高java程序的类型安全、可维护性和可靠性

使用泛型

集合框架中的泛型

编译器负责添加元素的类型合法性检查
Example:
- 集合Vector

  • 映射HashTable

泛型的向后兼容性

  • Xlint:unchecked编译

  • 添加@SuppressWarnings({“unchecked”})注解

泛型进阶

  • 泛型类
public class Vector<E> {
    public void addElement(E obj) { /* ... */ }
    public E elementAt(int index) { /* ... */ }
}
  1. 若使用时不指定E的具体数据类型,编译器将其作为Object类型处理
  2. 同一个泛型类与不同的类型参数符合而成的类型间,不存在继承关系
  • 类型通配符“?”
    如:Vector<?>是任何泛型Vector的父类型
    作为入参,方法中不允许add()方法,但可以remove()/clear()操作

  • 泛型方法

public <T> T evaluate(T a, T b){
    if(a.equals(b))
        return a;
    else
        return null;
}
public class Test<T> {
    public void m1(T t){

    }
}

受限制的类型参数

// T的父类必须是Number,比如Integer、Float、Double
public class Point<T extends Number>{
}

// T的父类必须是Number,比如Integer、Float、Double
public void show(Vector<? extends Number> v){
    for(Number n : v){
    }   
}

// T的父类必须是Number,比如Integer、Float、Double
Vector<? extends Number> va;
  • 接口
// T必须实现某接口
public class Point<T extends interface>{
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值