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

什么是泛型

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

什么是泛型

泛型
  • 泛型概念
    • 参数化类型
  • 泛型的好处
  • 泛型的檫除
  • 泛型的表示
  • 泛型应用
    • 泛型类
    • 泛型方法
    • 泛型接口

泛型概念

泛型是 Java SE5 出现的新特性,泛型的本质是类型参数化或参数化类型,在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型。
简单说:把类型明确的工作推迟到创建对象或调用方法的时候才去明确的特殊的类型

参数化类型
  • 把类型当作是参数一样传递
  • <数据类型>只能是引用类型
泛型的好处
  • 代码更加简洁【不用强制转换】
  • 程序更加健壮【只要编译时期没有警告,那么运行时期就不会出现ClassCastException异常】
  • 可读性和稳定性【在编写集合的时候,就限定了类型】
泛型的檫除

JDK5提出了泛型这个概念,为了兼容JDK5之前版本。会把带有泛型特性的集合赋值给老版本的集合时候,会把泛型给擦除

  1. 泛型只在编译阶段有效,编译之后JVM会采取去泛型化的措施。
  2. 泛型的运行阶段是没有效果 (反射机制验证,运行阶段无效)
泛型的表示

泛型可以定义在接口方法中,分别表示为泛型类、泛型接口、泛型方法。泛型的使用需要先声明,声明通过<符号>的方式,符号可以任意,编译器通过识别尖括号和尖括号内的字母来解析泛型。泛型的类型只能为类,不能为基本数据类型。尖括号的位置也是固定的,只能在类名之后或方法返回值之前。

一般泛型有约定的符号:E 代表 Element, 通常在集合中使用;T 代表 Type,通常用于表示类;K 代表 Key,V 代表 Value, 通常用于键值对的表示;? 代表泛型通配符。

  • 普通符号 < T>
  • 无边界通配符
  • 上边界通配符
  • 下边界通配符
泛型应用

规则

  • 必须"先声明再使用,泛型的声明是通过"<>"实现。
泛型类
public class PersonNew  {

    private T t;

    public T getT() {
        return t;
    }

    public void setT(T t) {
        this.t = t;
    }

    public PersonNew(T t) {
        this.t = t;
    }
}
泛型方法
public class Demo07  {

    
    public K method1(K k,V v){
        return (K)null;
    }

    
    public  T method2(T t,V v){
        return (T)null;
    }

    
    public static  K method3(){
        return null;
    }

静态方法中没法使用类中定义的泛型

泛型接口
public interface CalGeneric > {

    T add(T a,T b);

    T sub(T a,T b);

    T mul(T a,T b);

    T div(T a,T b);
}
public class CalIntegerGeneric implements  CalGeneric {
    @Override
    public Integer add(Integer a, Integer b) {
        return null;
    }

    @Override
    public Integer sub(Integer a, Integer b) {
        return null;
    }

    @Override
    public Integer mul(Integer a, Integer b) {
        return null;
    }

    @Override
    public Integer div(Integer a, Integer b) {
        return null;
    }
}
转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/1039722.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

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