您好,欢迎来到站长目录(28sn.com)!


从过年喝酒中,我重新领悟到了 Java 中的泛型!

来源:网络整理 浏览:269次 时间:2022-05-27

第一时间获取技术干货和业界资讯!

☞ 免费CSDN资料帮下服务 | 免费加群 ☜

我是一个程序员,如假包换。你看我连过年喝酒都想着 Java!

听说喝酒都想着 Java 的程序员不是一个好程序员!那我就给大家证明一下,我对泛型的理解有没有“掺酒”。

什么是泛型?
这个网上有很对定义,但是都不好理解。简单的来说,就是“类型参数化”,或者说是“参数化类型”。

就是说这个类型,我在撸代码的时候,并不能确定。就把这个类型给参数化,这样就相当于你“传递给它一个什么参数,它就是什么类型”!

这句话有点夸张,描述不是特别恰当和准确。那就看我喝酒的时候想到的。

比如,这个酒杯,它在生产的时候,并不知道我将来用来喝酒,还是喝饮料,喝白开水,喝茶都有可能。而且就是用来装酒,我也能用来装白酒、啤酒、红酒、黄酒等酒。

在比如,我们的肚子,生下来的时候并不知道,我们能吃什么不能吃什么。只有在你用来吃,装东西的时候。才知道,这个肚子能装酒,那个肚子能装肉。

这就是泛型,生产制造的时候,我们并不知道将来会用来装什么?只有调用者明确。

那么一句话来总结一下:泛型其实就是在定义类、接口、方法的时候不局限地指定某一种特定类型,而让类、接口、方法的调用者来决定具体使用哪一种类型的参数。

泛型的使用场景有哪些?
这也是一个问题,很多人理解泛型。但是你问他,Java 中泛型除了集合:Map、List、Set 等,平时工作中还有哪些地方适合用泛型?

你回答:“JDK 集合,Future<T>,WeakReference<T>,Class<T>”等。

你要这样回答,我真不满意!我想问的是,哪些场景需要用到泛型,而不是哪些地方使用的是泛型?这是两个问题。

那么到底有哪些场景适合呢?我简单列举了一下。

  • 约束对象类型的场景,定义边界(T extends …)的地方。

  • 用户希望返回他自定义类型的返回值场景,比如 Json 转 Java Bean。

  • 在用反射的应用中,也经常会用到泛型,如 Class<T>。

其他的,关于类型擦除、泛型通配符、有界类型等我就不写说了,具体可以参考我的这篇文章《你真的懂 <em>interface</em> 泛型及继承关系》。

最后说一下,泛型的 PECS 原则。the producing list 使用 extends,简称:PE;而 the consuming list 使用 super,简称:CS。这就是 PECS 原则。

简单说,就是下面 4 句话!

  • 只用于“读”功能时,泛型结构使用<? extends T>

  • 只用于“写”功能时,泛型结构使用<? super T>

  • 如果既用于“写”,又用于“读”操作,那么直接使用<T>.

  • 如果操作与泛型类型无关,那么使用<?>

祝大家新年快乐!

推荐站点

  • 我爱发烧音乐我爱发烧音乐

    我爱发烧音乐囊括了从流行音乐到古典音乐多个类型的音乐作品,专栏推荐最新的音乐,提供音乐排名榜单!可供免费线上收听音乐,歌曲流畅,音效极佳! 网站提供的钢琴以及二胡专栏,可供收听者,陶冶情操,改善心情,是难得的轻音乐典藏!

    www.520fs.com
  • 世纪音乐网世纪音乐网

    世纪音乐网是专业的在线音乐试听MP3下载网站。歌曲总计30余万首,收录了网上最新歌曲和流行音乐,DJ舞曲,非主流音乐,经典老歌,劲舞团歌曲,搞笑歌曲,儿童歌曲,英文歌曲等。是您上网听歌的最佳网站。

    www.ssjj.com
  • 杭州网杭州网

      杭州网是杭州地区唯一的新闻门户网站,由中共杭州市委宣传部、杭州日报报业集团和杭州广播电视集团共同组建的杭州网络传媒有限公司运营。

    www.hangzhou.com.cn
  • 深圳在线深圳在线

      深圳在线 www.szol.net是深圳本地最大、最早的地方生活资讯网站之一,网站名“深圳在线www.szol.net”由南方报业传媒集团编辑委员会总编辑、南方日报社总编辑、南方都市报总编辑、南方书画院名誉院长王春芙亲笔题名,深圳在线www.szol.net团队与深圳热线www.szonline.net、奥一网www.oeeee.com都源于全国最早成立于1996年的知名网络公司——深圳万用网。

    www.szol.net
  • 今题网今题网

     今题网- 中国领先的社区服务网,提供社区服务, 在线交友和商家推广服务,于2004年创建上线,公司现有员工超过百名。今题网自成立以来,凭借其独特的定位和丰富的社区交友功能, 凭借其团队超强的搜索引擎优化技术吸引超过千万的用户成为今题网的注册会员。

    www.jinti.com

鄂公网安备 42062502000001号