资讯专栏INFORMATION COLUMN

一图看懂Java泛型通配符

Sleepy / 1386人阅读

摘要:根据上面这些原则,一个简单的例子如下,省略了和可以输入任何及子类的对象能确定返回的对象一定是或父类的对象只能确定返回的对象一定是选择限定通配符时的快速判断方法参考

当使用 的时候,表明未知类的继承结构处于 ObjectMyClass 之间,这时

编译器只能确定任何返回该未知类型的方法,返回的变量都是 Object 的子类,所以返回的类型就确定为 Object,比如 getter 方法

使用该未知类型作为参数的方法,该参数一定是 MyClass 的父类,所以可以传递 MyClass 及其子类进去,比如 setter 方法

而使用 的时候,未知类型一定是 MyClass 的子类,但向下延伸到无穷尽,无法判断

所以返回未知类型的方法的返回类型有一个上界,就是 MyClass,即返回类型确定为 MyClass

但是使用未知类型的方法,因为向下继承无限延伸,无法判断下界,所以不能使用该方法,比如 setter(可以 set(null))

使用 的时候,可以当作 ,即上界是 Object,可以使用 getter 方法,不可以使用 setter 方法。

根据上面这些原则,一个简单的例子如下:

@Data // lombok,省略了 getter 和 setter
class Holder{
    private T t;

    public  void testSetter(Holder holder, U u) {
        holder.setT(u); // 可以输入任何 MyClass 及子类的对象
        holder.setT(null);
    }

    public  void testGetter1(Holder holder) {
        MyClass obj = holder.getT(); // 能确定返回的对象一定是 MyClass 或父类的对象
    }

    public void testGetter2(Holder holder) {
        Object obj = holder.getT(); // 只能确定返回的对象一定是 Object
    }
}

class MyClass{}

选择限定通配符时的快速判断方法:

get-put principle:
Use an extends wildcard when you only get values out of a structure, use a super wildcard when you only put values into a structure, and don"t use a wildcard when you do both.

参考:
https://www.ibm.com/developerworks/java/library/j-jtp07018/index.html

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/68547.html

相关文章

  • 【阿里云北京峰会】一图看懂阿里云弹性裸金属服务器如何帮助企业迁移上云

    长按图片识别二维码,立即咨询阿里云上云专家!

    import. 评论0 收藏0
  • CloudBest:科普 | 一图看懂 5G 从哪来的

    摘要:一个人的气质里有走过的路读过的书爱过的人又经历了哪些故事呢引子一部高清电影秒秒钟就能下载下来远程游戏再也不会有卡顿和延迟的感觉了依托也出现了一系列的新东西,比如,车联网自动驾驶远程控制等等那从哪来的呢她经历了怎样的故事才走到如今的样子本期将一个人的气质里有走过的路、读过的书、爱过的人5G 又经历了哪些故事呢?引子一部高清电影 秒秒钟 就能下载下来远程游戏再也不会有卡顿和延迟的感觉了依托 5G...

    Tecode 评论0 收藏0
  • 追根溯源!图看尽深度学习架构谱系

    摘要:近几年,深度学习高速发展,出现了大量的新模型与架构,以至于我们无法理清网络类型之间的关系。是由深度学习先驱等人提出的新一代神经网络形式,旨在修正反向传播机制。当多个预测一致时本论文使用动态路由使预测一致,更高级别的将变得活跃。 近几年,深度学习高速发展,出现了大量的新模型与架构,以至于我们无法理清网络类型之间的关系。在这篇文章中,香港科技大学(HKUST)助理教授金成勳总结了深度网络类型之间...

    tinylcy 评论0 收藏0
  • 一张脑图看懂BUI Webapp移动快速开发框架【下】--快速入门指引

    摘要:例如改成例如改成以上两种开发方式都可以结合原生平台打包成独立应用。 继上一篇一张脑图看懂BUI Webapp移动快速开发框架【上】--框架与工具、资源 大纲 在线查看大纲 思路更佳清晰 1. 框架设计 框架介绍 简介 BUI 是用来快速构建界面交互的UI交互框架, 专注webapp开发, 开发者只需关注业务的开发, 界面的布局及交互交给BUI, 开发出来的应用, 可以嵌入平台 ( Li...

    hzx 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<