弄懂java泛型中的extends和super

记住一个前提

java 中的List<> 在运行中, 只会是一种类型 ;例如: LIst<Dog> List<Cat> List<Object>

判断能否转换成统一一种类型, 能转换就能写

Animal是Dog Cat的超类 littleDog是Dog的子类 littleCat 是Cat的子类

List<? extends Animal> a;

List<? super Dog> b;

  1. 往a中加Cat,因为是extends, 所以a中泛型的类型可能是Dog,也就是Animal的子类, 此时Cat不能转成Dog, 因此不能写,违背前提;
  2. 往b中加littleDog, 如果此时b中是Object, littleDog能转成Object, 如果此时b中是Dog, littleDog也能转成Dog, b中存的都是Dog,没问题。 总之, b中实际的类型,肯定是Dog的超类, 那么无论加入什么Dog的子类,都能强转到那个类型。
相关推荐
Jul1en_16 分钟前
【Java 脚手架】封装通用工具类-1
java·spring boot·分布式·spring·spring cloud
mlidongfeng41 分钟前
[AI][C++26] SIMD 编程模型思考
开发语言·c++·人工智能
j7~42 分钟前
【Linux】二十七.线程篇四《Linux多线程编程:线程互斥(互斥量的底层到封装)、线程安全和冲入、死锁》---详解
linux·开发语言·c++·线程安全·死锁·线程互斥·重入
关于不上作者榜就原神启动那件事1 小时前
从 MDC 到 Agent:我手搓的文档路由协议,在 Spring AI Alibaba 里找到了正式实现
java·人工智能·spring·ai·agent
刘名喜1 小时前
第09篇-协程基础-Kotlin异步编程
开发语言·kotlin·springboot
其实防守也摸鱼1 小时前
HackBar 工具完全指南:信息探测、漏洞验证与安全测试实战
开发语言·人工智能·学习·安全·网络安全·安全威胁分析·安全性测试
亦暖筑序1 小时前
重新认识 AgentScope-Java 2.0:ReActAgent 负责推理,HarnessAgent 负责运行
java·后端·agent
会博通·代码搬运工1 小时前
会博通API对接实战:工程企业文档分布式采集系统的技术实现与Python SDK详解
开发语言·分布式·python·线性代数·矩阵·架构·电子档案合规
木井巳1 小时前
【DFS解决floodfill算法】岛屿的最大面积
java·算法·leetcode·深度优先
运维大师1 小时前
【K8S 运维实战】34-多集群管理Karmada
java·运维·kubernetes