JAVA泛型基础

什么是泛型

泛型的本质是类型参数化,解决不确定对象类型的问题。泛型是在编译器增加一道检查,目的是促使程序员在使用泛型时安全放置和使用数据

泛型的好处

  1. 类型安全。避免ClassCastException
  2. 提升可读性。在编码阶段就显式的知道泛型集合、泛型方法等处理的对象是什么
  3. 代码重用。泛型合并了同类型的处理代码,使代码重用度变高

一个例子记住泛型概念

请查看下列代码是否会出现编译错误

public class Demo<T>{
    static <String, T, Alibaba> String get(String string, Alibaba alibaba) {
        return string;
    }

    public static void main(String[] args) {
        Integer first = 222;
        Long second = 3333L;
        Integer result = get(first, second);
    }
}

例子说明

当然不会出现编译错误,因为这里的String是参数,IDEA给了非常好的提示
在这里插入图片描述
关于泛型的几点理解

  1. 尖括号的位置非常讲究,只能出现在类之后和方法返回值之前
  2. 尖括号里的每一个元素都指代一种未知的类型
  3. 泛型在定义处只具备执行Object方法的能力
  4. 泛型只是一种编写代码的语法检查。对于编译后的字节码,没有这些花头花脑的方法签名,只有Object类型。这也就是类型擦除

泛型出现前

微波炉Stove可以加热多种食物,在没有泛型前只能用Object。

public class Stove{
    public static Object heat(Object food) {
        System.out.println(food+"加热完成");
        return food;
    }

    public static void main(String[] args) {
        Meat meat = new Meat();
        meat = (Meat)Stove.heat(meat);
        Soup soup = new Soup();
        soup = (Soup) Stove.heat(soup);
    }
}

泛型出现后

不再需要类型强制转换

public class Stove{
    public static <T> T heat(T food) {
        System.out.println(food+"加热完成");
        return food;
    }

    public static void main(String[] args) {
        Meat meat = new Meat();
        meat = Stove.heat(meat);
        Soup soup = new Soup();
        soup = Stove.heat(soup);
    }
}

备注

文章的例子来自《码出高效》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值