zoukankan      html  css  js  c++  java
  • 什么是Java泛型?

    一、泛型的概念

    如果要求在一个类中定义一个保存年龄的属性,这个属性定义为int还可以定义

    字符串类型:

    ●private int age; .

    ●private String age;

    此时可以使用什么类型能表示这两种类型呢?首先想到的是Object类,该类是所有类型的父类,那么就可以使用该类型表示这个年龄的属性,因为子类类型可以向上转型为Object。

    Object是Java提供的一个最大父类,Java提供的所有其他引用类型的类都继承这个类,比如说String 类。

    DEMO:使用Obejct作为age的类型


    以上的代码可以实现一个类型(Object) 能表示其他类型,还能表示字符串。

    DEMO:把年龄设置为字符串

    使用Object可以实现需求,但是这个过程涉及到了向下转型,向下转型存在类型转换异常的风险(而且这个类型转换异常要运行时候才会出现)。如果保存的时候是字符串类型的数据,获取的时候转成int就出现了类型转换异常。

    DEMO:观察风险

    程序出现了类型转换异常,那么原因是Object类型的范围太大了,所以向下转型存在风险,此时泛型就登场,泛型就是在定义类的时候给出一个占位符标记,占位符的具体类型是在实例化对象的时候根据需求给出的,这样的类就是泛型类。

    DEMO:定义一一个泛型类

    以上的泛型类中的“T”就是一个占位符标记,在实例化对象之前不知道其类型,只有在实例化对象的时候指定出T的具体类型。

    DEMO:使用泛型类创建对象

    以上的使用了泛型避开了之前的向下转型,不存在类型转换异常的风险。

    DEMO:使用int作为泛型的类型

    以上的代码提示错误:表示不能使用int类型作为泛型的类型,在泛型中如果要使用基本数据类型必须使用其包装类代替。

    DEMO:使用基本数据类型的包装类作为泛型

    总结:

    1、一个类型不确定的时候需要使用一个占位符标记占位,之后实例化对象的时候具体根据需要确定出泛型的类型。

    2、泛型没有向下转型的风险。

    3、Java泛型(generics) 是JDK5中引入的-一-个新特性,泛型提供了编译时类型安全监测机制,该机制允许程序员在编译时监测非法的类型。使用泛型机制编写的程序代码要比那些杂乱地使用Object变量,然后再进行强制类型转换的代码具有更好的安全性和可读性。泛型对于集合类尤其有用,例如,ArrayList 就是一个无处不在的集合类。

    以下是我整理的Java学习资料免费提供

    详细的java系统视频免费学习地址

    有完整的Java初级,高级对应的学习路线和资料!专注于java开发。分享java基础、原理性知识、JavaWeb实战、spring全家桶、设计模式、分布式及面试资料、开源项目,助力开发者成长!


    欢迎关注微信公众号:码邦主

  • 相关阅读:
    DGA域名可以是色情网站域名
    使用cloudflare加速你的网站隐藏你的网站IP
    167. Two Sum II
    leetcode 563. Binary Tree Tilt
    python 多线程
    leetcode 404. Sum of Left Leaves
    leetcode 100. Same Tree
    leetcode 383. Ransom Note
    leetcode 122. Best Time to Buy and Sell Stock II
    天津Uber优步司机奖励政策(12月28日到12月29日)
  • 原文地址:https://www.cnblogs.com/hehe199316/p/14280668.html
Copyright © 2011-2022 走看看