深谈Java中的泛型

一、泛型的定义

泛型 译为广泛的类型,不明确的类型,在定义的时候不用计较真正数据类型是啥,只需要通过一个字符(通常使用大写英文字母,例如:T E A B )来声明即可;在进行调用时传入真正的数据类型,泛型就会自动变为传递数据的数据类型;在 JDK 1.5 的时候添加的技术。

二、泛型的声明格式

泛型的声明格式:使用 <> 进行泛型的声明,然后再 <> 内用大写的英文字母表示泛型;泛型根据声明的位置不同,可分为泛型类,泛型方法;
泛型类 即是在声明类的同时声明泛型,该泛型在类中可以被使用;
泛型方法 是在声明方法时声明的泛型,只能在方法内使用;
例如集合的泛型使用:
Class TreeSet<E>{
}
其中 E 就是泛型,是一个不明确的类型,意味着在创建 TreeSet 容器时,可以指定一个具体的数据类型,也可以不指定;一旦指定,那么构建好的容器就只能存放该类型的数据;
再比如:
TreeSet<Integer> treeSet = new TreeSet<Integer>();
意味着, treeSet 容器中只能存放 Integer 类型的数据;
注意 针对集合,泛型只能是引用数据类型,不能是基本数据类型;

三、使用泛型的好处

泛型的声明是为了在声明时更加容易,在使用该结构时更加灵活多变;
泛型将遍历接受数据的处理逻辑提前化, 不需要进行强制类型转换
泛型可以 规范数据的数据类型,方便数据的统一处理

四、泛型类定义和使用

public class Person<T,E>{
//声明类的时候声明泛型
    T name;
    E age;
    public T getName(){
        return name;
    }
    public void setName(T name){
        this.name =name;
   }
    public E getAge(){
        return age;
    }
    public void setAge(E age){
        this.age =age;
    }
}

五、泛型方法的定义和使用

泛型方法的使用实际就是 替换以前的方法重载,减少同名方法的声明次数
注意:
普通方法能够使用类的泛型也可以使用方法中声明的泛型;静态方法只能使用方法中的泛型;

六、集合泛型的使用以及泛型的上下限

泛型使用最广泛的地方即是集合当中的使用,能够有效的规定约束集合的数据类型,避免数据的强制转换等问题。在使用集合时,即创建集合对象的时候要求必须使用泛型。

 集合中使用泛型的格式

集合类 < 数据类型 >/ 接口 < 数据类型 > 对象 = new 集合类 ();

七、泛型的上下限

上限:
  <? extends Object>
其中 ? 也是泛型的一种表示方式,叫通用泛型 extends 表示继承 
? extends Object 表示 ? 必须是 Object 的子类或者它本身。一般在存储元素时使用上限(? extends E)。因为一旦确定好类型,存入的就都是E或E的子类,取出时都按照上限类型E来运算,不会出现类型安全隐患。
下限:
  <? super E>
<? super E> 表示 ? 必须是 E 或者 E 的父类
受限泛型的下限泛型,一般只有使用比较器的时候用到。
  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值