弄懂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的子类,都能强转到那个类型。
相关推荐
hai_android10 分钟前
Kotlin Flow combine 源码剖析:一个 Channel 如何优雅合并多条流
android·java·kotlin
caoerzhong18 分钟前
JeeWMS 开源仓库管理系统权限与域验证解析:Java WMS 如何把数据权限管到仓、货主与人
java·python·开源·vue
君顾121 分钟前
西安 24 小时自助健身房系统开发实战指南
java·开发语言·健身房
用户0942485680321 分钟前
第9章:OpenJDK堆分代与 Serial/Parallel GC 基础
java·jvm
Wang's Blog30 分钟前
Java框架快速入门: Spring Security+OAuth2之RBAC与角色分层实践
java·网络·spring
caoerzhong42 分钟前
JeeWMS 开源仓库管理系统多租户架构解析:一套 Java WMS 如何同时服务多个货主与多个仓库
java·架构·开源·vue
sunshine22 girl1 小时前
Java学习四 面向对象原理
java
干到60岁退休的码农1 小时前
15.创建获取用户接口与JWT认证器
java·spring boot·mybatis
小羊没烦恼!1 小时前
Memory 记忆设计讨论:Agent Memory 的数据模型可以怎么设计
java·开发语言·前端·c++·c#
SL_staff1 小时前
战略落地的最后一公里:从目标到个人日历的自动化链路实现
java·github·全栈