弄懂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的子类,都能强转到那个类型。
相关推荐
tkevinjd1 分钟前
事务、ACID与隔离
java·数据库·sql
阿洛学长4 分钟前
Kali Linux 虚拟机安装(VMware Workstation 17)
java·linux·服务器
AI人工智能+电脑小能手8 分钟前
【大白话说Java面试题 第91题】【Mysql篇】第21题:分布式锁的使用场景和原理?
java·数据库·分布式·mysql·面试
JAVA社区14 分钟前
Java高级全套教程(十三)—— 分布式锁超详细实战详解(原理+三种方案企业级落地)
java·开发语言·分布式·spring cloud·面试·java-zookeeper
Mahir0819 分钟前
MyBatis 延迟加载深度解密:从使用方式到底层动态代理原理全解
java·后端·面试·mybatis
超梦dasgg20 分钟前
Java 生产环境 Maven 实战指南
java·开发语言·maven
贺国亚26 分钟前
Agent 工程实践 · 生产落地 Playbook
java·人工智能·aigc
专注VB编程开发20年27 分钟前
淘宝上架销售技巧:Excel管理系统开发 / VBA / ERP / OA办公管理
java·数据库·excel
叶子野格32 分钟前
《C语言学习:位运算》17
c语言·开发语言·c++·学习·visual studio
Leo18744 分钟前
分布式事务
java·分布式·分布式事务