当前位置: 首页 > news >正文

建立网站的基本流程有哪些步骤给wordpress添加小图标

建立网站的基本流程有哪些步骤,给wordpress添加小图标,中国品牌网是什么网站,新东方教育机构官网文章目录137. Java 泛型 - 泛型与通配符&#xff1a;子类型化关系**1. 常规类的继承与泛型类型的关系****2. 泛型类型与子类型化****❌ 错误示例&#xff1a;****3. 使用通配符解决泛型之间的子类型关系****✅ 示例&#xff1a;List<Integer> 和 List<Number> 之间…

文章目录

  • 137. Java 泛型 - 泛型与通配符:子类型化关系
    • **1. 常规类的继承与泛型类型的关系**
    • **2. 泛型类型与子类型化**
      • **❌ 错误示例:**
    • **3. 使用通配符解决泛型之间的子类型关系**
      • **✅ 示例:`List<Integer>` 和 `List<Number>` 之间的关系**
    • **4. 上限通配符与下限通配符的关系**
      • **上限通配符(`? extends T`)**
      • **下限通配符(`? super T`)**
    • **5. 使用通配符创建泛型类型之间的关系**
    • **6. 总结**
      • **通配符与泛型子类型化的要点:**
      • **通配符的实际应用:**
    • **7. 小贴士:通配符的使用场景**

137. Java 泛型 - 泛型与通配符:子类型化关系

在 Java 中,泛型类和接口并不像普通类那样直接遵循继承规则。为了解决这个问题,我们可以使用通配符 (? extends T? super T) 来创建泛型类或接口之间的关系。本篇将详细解释如何使用通配符建立泛型类型之间的子类型关系,并通过示例帮助您理解。


1. 常规类的继承与泛型类型的关系

在普通类中,继承遵循子类型规则,即如果类 B 扩展类 A,则 BA 的子类型。您可以这样编写代码:

class A { /* ... */ }
class B extends A { /* ... */ }B b = new B(); 
A a = b; // 合法,因为 B 是 A 的子类

🔍 子类型规则:

  • BA 的子类型,您可以将 B 类型的对象赋给 A 类型的变量。

2. 泛型类型与子类型化

与常规类不同,泛型类型之间并不直接遵循子类型化规则。这意味着,即使 IntegerNumber 的子类,List<Integer> 也不是 List<Number> 的子类型,实际上这两者之间没有任何继承关系。

❌ 错误示例:

List<B> lb = new ArrayList<>();
List<A> la = lb;   // 编译错误:List<B] 不是 List<A> 的子类型

即使 BA 的子类,List<B> 并不等于 List<A>,这会导致编译错误。


3. 使用通配符解决泛型之间的子类型关系

为了建立泛型类型之间的关系,可以使用上限通配符 (? extends T) 来让 Java 编译器理解某个泛型类型是另一个泛型类型的子类型。

✅ 示例:List<Integer>List<Number> 之间的关系

IntegerNumber 的子类型,但是 List<Integer> 不是 List<Number> 的子类型。这是因为 泛型类型的子类型化并不自动传递。我们可以通过上限通配符来为 List<Integer>List<Number> 之间建立关系。

List<? extends Integer> intList = new ArrayList<>();
// 这是合法的,因为 List<? extends Integer> 是 List<? extends Number> 的子类型
List<? extends Number> numList = intList;

🔍 解析:

  • intListList<? extends Integer>,它表示存储了 Integer 或其子类的列表。
  • numListList<? extends Number>,它表示存储了 Number 或其子类的列表。
  • 由于 IntegerNumber 的子类,所以 List<? extends Integer> 也可以看作 List<? extends Number> 的子类型。这样,我们就可以建立起 intListnumList 之间的关系。

4. 上限通配符与下限通配符的关系

上限通配符(? extends T

  • 用途:用来指定类型范围,表示元素的类型是 TT 的子类型。
  • 适用场景:适用于读取元素(数据消费)场景,您只能读取 T 类型的数据,不能插入(除了 null)。

下限通配符(? super T

  • 用途:用来指定类型范围,表示元素的类型是 TT 的超类型。
  • 适用场景:适用于写入元素(数据生产)场景,您可以将 T 类型的数据插入列表中,但只能作为 Object 类型读取元素。

5. 使用通配符创建泛型类型之间的关系

通过通配符,我们可以创建泛型类型之间的关系,使得代码更加灵活。以下是一些关键的泛型类型关系:

  • List<? extends Number> 可以由 List<Integer>List<Double> 等列表来填充,因为它们都是 Number 的子类。
  • List<? super Integer> 可以由 List<Integer>List<Number>List<Object> 来填充,因为 Integer 是这些类型的父类。
List<? extends Number> numList = new ArrayList<Integer>(); // 合法,因为 Integer 是 Number 的子类
List<? super Integer> objList = new ArrayList<Number>();  // 合法,因为 Integer 是 Number 的子类

6. 总结

通配符与泛型子类型化的要点:

  • 普通类的继承:遵循子类型规则,如果 B 扩展 A,则 BA 的子类型。
  • 泛型类的继承:泛型类型之间没有直接的继承关系,List<B> 并不是 List<A> 的子类型。
  • 使用通配符(? extends T? super T
    • ? extends T:表示“某个类型 TT 的子类型”,适用于数据读取(消费数据)。
    • ? super T:表示“某个类型 TT 的超类型”,适用于数据写入(生产数据)。

通配符的实际应用:

  • 建立泛型类型之间的关系,让代码更加灵活。
  • 使用通配符来处理不同类型的泛型数据,实现更广泛的类型兼容性

7. 小贴士:通配符的使用场景

  • ? extends T:适用于 读取数据 时需要限制元素类型范围的情况,数据消费者
  • ? super T:适用于 写入数据 时需要限制元素类型范围的情况,数据生产者

🎯 记住

  • 泛型类型之间并没有直接的继承关系,但通配符可以帮助建立这些关系,使得代码更灵活。
http://www.dtcms.com/a/517570.html

相关文章:

  • Springboot——整合Aspose实现table的字段填充与表格复制
  • 产品展示型网站赏析河南网站建设电话
  • 国外免费搭建网站源码企业网站建设策划书 前言
  • 【网络代理相关知识】
  • 美股及墨西哥股票数据接口文档
  • 做电销哪些网站可以找到客户做网站的北京
  • 网站描述修改做h5那个网站好
  • 什么公司时候做网站厦门编程培训机构
  • 建设网站 买了域名还要什么网站权重分为几个等级
  • 操作系统 进程(3)进程调度算法
  • 建筑设计自学网站做一个平台网站要多少钱
  • 专门做单页的网站把网站制作成app
  • 电子商务网站建设实践报告摘要如何做查询网站
  • HX711电子秤模块详解(STM32)
  • 成都高速公路网站建设招标消防工程师证怎么考
  • 白山北京网站建设大连甘井子区教育公共服务平台
  • SpringBoot考勤管理系统
  • 公司网站站群是什么为什么要建设就业指导网站
  • 用cosyvoice批量把生成有声书
  • 三门峡企业网站建设公司全球最大的c2c平台
  • AAAI 2025 | 即插即用,川大Mesorch刷新SOTA,用「介观」Transformer架构终结图像造假
  • 【2025最新】ArcGIS for JS 实现随着时间变化而变化的热力图
  • 滨州市建设局网站手机网站全屏代码
  • 创业先做网站德清淘宝网站建设
  • 数据结构10:树和二叉树
  • 手机网站进不去怎么办自己建网站有什么好处
  • 高端建站什么意思wordpress 识别pc手机版
  • 从零开始:设计你第一款游戏的“法则”
  • 电子商务网站建设与管理的总结wordpress如何开启阿里云cdn
  • 国外网站模板欣赏做ps兼职的网站有哪些