侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

详解Java泛型(知识点总结)

Java  /  管理员 发布于 8年前   202

概念

来源:Java在设计开始之前不是通用的,直到它在JDK 1.5中被引入。Java泛型是通过擦除实现的。你知道什么是擦除吗?往下看。

概念:常规类和方法只能使用特定类型;基本类型或自定义类。如果要编写可应用于多种类型代码的代码,这种严格的限制将对代码施加很大的约束。泛型实现了参数化类型的概念,使代码能够应用于多个类型。当泛型在编程语言中出现时,它们的最初目的是希望类和方法具有广泛的表达能力。

【推荐学习:java视频教程】

简单的泛型

出现泛型有很多原因,其中最重要的一个原因是创建容器类。我们暂时不指定类型,但决定以后使用什么类型。为了实现这一目标,需要在类名后面使用类型参数,用尖括号括起来。然后,当使用此类时,将用实际类型替换此类型的参数。在下面的示例中,t是类型参数。代码如下:

然而,在许多源代码中,一些泛型类具有多个泛型参数,例如Java。UTIL功能。双功能,有三种类型的参数t,u,r。

泛型方法

泛型方法使方法独立于类。在编写通用代码时,基本的指导原则是尽可能使用通用方法。这意味着,如果可以对整个类使用泛型方法而不是泛型方法,那么可以使用泛型方法,因为它们可以使事情更清楚。此外,对于静态方法,不能访问泛型类的类型参数,因此如果静态方法需要使用泛化功能,则必须将它们变为泛型方法。

泛型的擦除

当我读了Java编程思想的一般章节中的“被删除的奥秘”部分时,我特别头晕,然后当我向下看时,我变得越来越困惑。尤其是当你看边界和通配符的时候,它有点令人困惑。首先看看什么是擦除。在泛型代码中,有关泛型参数类型的信息不可用。Java泛型是通过擦除实现的,这意味着当使用泛型时,任何特定的类型都会被擦除,而您所知道的唯一一件事就是使用对象。由于Java最初没有引入泛型,所以它被设计成与旧版本的JDK兼容。ErAcess是Java通用实现之间的折衷。因此,当您运行时,list<string>与list<integer>相同。请注意,它正在运行,但在编译时,list<string>表示此字符串类型的列表容器,list<integer>表示当前整数类型的列表容器。例如,来自Java编程思想的例子。

泛型的边界

Java中的泛型,当编译时,T表示一种类型,如果没有指定边界,它就等于对象。我们可以使用extends关键字为泛型指定边界。为了能够调用f(),我们可以在给定泛型类边界的情况下帮助泛型类,告诉编译器必须接受边界后面的类型。这里使用扩展关键字。将上述代码更改为

总结

Java 泛型的特性在很多开源的框架上是用的非常多的。这快需要深入的理解一下,我想随着敲代码的年限上,应该到了后面会有不一样得理解吧。现在通过书上能够知道,理解得就只有这么多了。

本文来自 java入门 栏目,欢迎学习!

以上就是详解Java泛型(知识点总结)的详细内容,更多请关注其它相关文章!


  • 上一条:
    Java如何创建对象?五种方式介绍
    下一条:
    java数据结构之队列的入队和出队
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在java中实现的脱敏工具类代码示例分享(0个评论)
    • zookeeper安装流程步骤(0个评论)
    • 在java中你背的“八股文”可能已经过时了(2个评论)
    • 在php8.0+版本中使用属性来增加值代码示例(3个评论)
    • java 正则表达式基础,实例学习资料收集大全 原创(0个评论)
    • 近期文章
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-11
    • 2018-03
    • 2020-03
    • 2023-05
    • 2023-11
    • 2024-01
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客