iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >java简明例举讲解泛型
  • 133
分享到

java简明例举讲解泛型

2024-04-02 19:04:59 133人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录什么是泛型泛型类与接口派生子类泛型通配符类型擦除什么是泛型        早期的Object类型可以接收任意的对象类型,但是在实际的使用中

什么是泛型

       早期的Object类型可以接收任意的对象类型,但是在实际的使用中, 会有类型转换的问题。也就存在这隐患,所以Java提供了泛型来解决这个安全问题

      泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传

递实参。就是说 , 我们可以将类型向参数一样传递过去  

//一个泛型类
//T可以为任意字符,如A,a,B等都可以
public class Demo1<T> { 
    private T num;
    public Demo1() {}
    public Demo1(T num) {
        this.num = num;
    }
    public void setNum(T num) {
        this.num = num;
    }
    public static void main(String[] args) {
        Demo1<Integer> demo1 = new Demo1<>(101);
    }
}

      如上 , 实际传入时需指明传入的实际类型 , 此处为Integer(泛型不能为int等基本类型,只能为引用类型) , 如果不指明则默认为object型

      当然也可以定义多个泛型

public class Demo1<T,A> { } 

泛型类与接口派生子类

       此处我们定义一个Demo2类继承上面的Demo1 类

可以看到 ,这样显然是不行的 , 那么此处有两种解决办法

1. 指明父类泛型的具体类型 ,如 : 

public class Demo2 extends Demo1<Integer>{
}

2. 子类也是泛型类, 如 :

public class Demo2<T> extends Demo1<T>{
}

子类也是泛型类,子类和父类的泛型类型要一致

子类不是泛型类,父类要明确泛型的数据类型

泛型接口与泛型类的定义及使用基本相同。

泛型通配符

相信很多人都见过这种写法

 ? 是什么意思呢  , 接着我们来解释

 ? 代表类型通配符 , 代表传入实参时 , 可以传入为任意类型 

例如, 上述demo1 中 new对象也可以这样写 

Demo1<?> demo1 = new Demo1<>(101);

       ? 只能代表传入的具体实参 , 类上面的是形参,所以?只能具体传入时使用, ? 表示实际传入的参数类型可以是任意的

类型通配符上限 :

 类/接口<?extends 实参类型>

// ? extends Number
public static void method(Demo1<? extends Number> demo1){
}
public static void main(String[] args) {
   method(new Demo1<Integer>());
}

       如上 , 我们在method() 中传入的参数是上述定义的Demo1类类型 ,  ? extends Number的意思就是说我们实际传入的类型上限是 Number , 也就是说, 只有Number 和 Number的子类(此处传入为Integer , Number是Integer的父类)被实际传入才是合法的

类型通配符下限 :

类/ 接口 < ? super 实参类型 >    

了解了上限 , 那么下限这里也就不难理解了 , 就是传入的必须是 自己或者自己的父类

public static void method1(Demo1<? super Number> demo1){
}
public static void main(String[] args) {
    method1(new Demo1<Object>());
}

此处必须传入Number 或者 Number的父类 (此处传入为Object类)

类型擦除

        泛型是Java 1.5版本才引进的概念,在这之前是没有泛型的,但是,泛型代码能够很 好地和之前版本的代码兼容。那是因为,泛到信息只存在于代码编译阶段,在进入JVM之前,与泛型相关的信息会被擦除掉,我们称之为一类型擦除. 泛型类被类型擦除后,相应的类型就被替换成 Object 类型或者上限类型.

       就是说 , 泛型只存在于编译期期间 , 真正执行代码的时候 , 是没有泛型这个概念的, 它只是在编译期对我们传入的类型做了约束

到此这篇关于java简明例举讲解泛型的文章就介绍到这了,更多相关java泛型内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: java简明例举讲解泛型

本文链接: https://www.lsjlt.com/news/147480.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • java简明例举讲解泛型
    目录什么是泛型泛型类与接口派生子类泛型通配符类型擦除什么是泛型        早期的Object类型可以接收任意的对象类型,但是在实际的使用中...
    99+
    2024-04-02
  • C语言简明清晰讲解枚举
    目录概述简单使用入门判断自定义数值一种不严格的写法概述 一个类型,值只能是一堆值中的一个。 比如星期几,只会是星期一到星期天。 用数值表示的话就是0到6,但是0到6不太好理解。 而枚...
    99+
    2024-04-02
  • C#泛型编的实例讲解
    本篇内容介绍了“C#泛型编的实例讲解”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!C# 泛型编程实例:using System;&...
    99+
    2023-06-17
  • Java枚举类型与泛型使用解读
    目录一、枚举类型1、使用枚举类型设置常量2、枚举类型常用方法3、枚举类型中的构造方法二、泛型1、泛型的常规用法2、泛型的高级用法总结一、枚举类型 1、使用枚举类型设置常量 以往设置常...
    99+
    2022-12-28
    Java枚举类型 Java泛型 Java枚举类型与泛型
  • Java通俗易懂讲解泛型
    目录1.什么是泛型2.引出泛型3.泛型类的语法4.裸类型5.泛型如何编译的5.1 擦除机制5.2.泛型数组为什么不能实例化6.泛型的上界7.通配符7.1.通配符能用来干嘛7.2.通配...
    99+
    2024-04-02
  • Java详细分析讲解泛型
    目录1.泛型概念2.泛型的使用2.1泛型类语法2.2泛型方法语法2.3泛型接口语法2.4泛型在main方法中的使用3.擦除机制4.泛型的上界5.通配符5.1通配符的上界5.2通配符的...
    99+
    2024-04-02
  • Java 泛型超详细入门讲解
    目录1、什么是泛型2、泛型是怎么编译的泛型的编译机制:擦除机制1、什么是泛型 泛型其实就是将类型作为参数传递,泛型允许程序员在编写代码时使用一些以后才指定的类型 ,在实例化该类时将想...
    99+
    2024-04-02
  • Kotlin 泛型详解及简单实例
     Kotlin 泛型详解概述一般类和函数,只能使用具体的类型:要么是基本类型,要么是自定义的类。如果要编写可以应用于多种类型的代码,这种刻板的约束对代码的限制很大。而OOP的多态采用了一种泛化的机制,在SE 5种,Java引用了泛...
    99+
    2023-05-31
    kotlin 泛型
  • C#泛型类概念举例分析
    这篇文章主要讲解了“C#泛型类概念举例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#泛型类概念举例分析”吧!C# 泛型类封装不是特定于具体数据类型的操作。泛型类最常用于集合,如链接列...
    99+
    2023-06-17
  • Java 泛型详解与范例
    目录一、泛型的使用二、泛型类的定义-类型边界三、类型擦除四、泛型类的使用-通配符五、泛型方法六、泛型的限制一、泛型的使用 前面我们学集合的时候,简单的说过泛型的使用。如下: Ar...
    99+
    2024-04-02
  • Java泛型与注解全面分析讲解
    目录1.什么是泛型2.为何使用泛型2.1.如何定义泛型2.2.通配符2.3.受限泛型2.4.泛型接口2.5.泛型方法3.java高级--注解3.1.预定义注解3.2.自定义注解(初级...
    99+
    2024-04-02
  • 史上最全图文讲解Java泛型
    目录前言一:泛型本质二:为什么使用泛型三:如何使用泛型1、泛型类2、泛型接口3、泛型方法四:泛型通配符五:泛型中KTVE的含义六:泛型的实现原理七:关于泛型数组要提一下八:最后前言 ...
    99+
    2024-04-02
  • Java实例讲解枚举enum的实现
    目录一.枚举介绍1.自定义枚举实现(1)示例(2)测试结果2.enum关键字实现枚举(1)示例(2)测试结果3.enum关键字注意事项(1)示例一.枚举介绍 1.枚举是一组常量的集合...
    99+
    2024-04-02
  • Java举例讲解分治算法思想
    目录分治算法什么是分治算法分治算法的思想分治法四大基本特征分治法求解问题的三个基本步骤分治算法解决问题过程的伪代码关于分治算法的举例归并排序基本步骤快速排序二分搜索算法小结分治算法 ...
    99+
    2024-04-02
  • 最新Java 泛型中的通配符讲解
    目录一、什么是类型擦除?二、案例实体准备三、常用的 ?, T, E, K, V, N的含义四、上界通配符 < extends E>五、下界通配符 < super...
    99+
    2024-04-02
  • Swift泛型Generics浅析讲解
    目录泛型(Generics)汇编分析泛型的实现原理关联类型(Associated Type)类型约束协议类型的注意点泛型解决不透明类型(Opaque Type)泛型(Generics...
    99+
    2024-04-02
  • java 泛型的详解及实例
    java 泛型的详解及实例Java在1.5版本中增加了泛型,在没有泛型之前,从集合中读取每一个对象都需要进行强转,如果一不小心插入了类型错误的对象,在运行时就会报错,给日常开发带来了很多不必要的麻烦,比如以下代码:public class ...
    99+
    2023-05-31
    java 泛型 ava
  • Java中泛型的示例详解
    目录泛型概述使用泛型的好处泛型的定义与使用定义和使用含有泛型的类含有泛型的方法含有泛型的接口泛型通配符通配符基本使用通配符高级使用----受限泛型泛型概述 我们都知道集合中是可以存放...
    99+
    2022-11-13
    Java泛型机制 Java泛型
  • VUE组件简明讲解
    目录前言一、全局组件1、定义2、全局组件调用二、局部组件1、定义2、局部组件调用前言 为什么vue就开始在前几年就流行并且实用起来了?这主要的是因为由于vue的一个最强大的功能就是v...
    99+
    2024-04-02
  • C++超详细讲解泛型
    目录1.了解泛型编程2.函数模板2.1简单示例2.2多个模板参数2.3模板实例化2.4模板和普通函数同时存在2.5函数模板不支持定义和声明分离3.类模板3.1简单示例3.2成员函数声...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作