package com.xiaoshan.invariance;
import java.util.ArrayList;
import java.util.List;
//泛型对协变和逆变的支持 演示程序
public class InvarianceDemo {
static class Super {
@Override
public String toString() {
return "Super{}";
}
}
static class Sub extends Super {
@Override
public String toString() {
return "Sub{}";
}
}
// public static void test1() {
//
// // 1、不支持协变
// // 编译不通过:Required type: List <Super>. Provided: ArrayList <Sub>
// List<Super> superList1 = new ArrayList<Sub>();
//
// // 编译不通过:Required type: List <Super>. Provided: List <Sub>
// List<Sub> subList1 = new ArrayList<>();
// List<Super> superList = subList1;
//
//
// // 2、不支持逆变
// // 编译不通过:Required type: List <Sub>. Provided: ArrayList <Super>
// List<Sub> subList2 = new ArrayList<Super>();
//
// // 编译不通过:Required type: List <Sub>. Provided: List <Super>
// List<Super> superList2 = new ArrayList<>();
// List<Sub> subList = superList2;
// }
public static void test2() {
// 1、实现协变
// 创建一个泛型为 Super 的列表 list,其类型为 List<? extends Super>
List<? extends Super> list = new ArrayList<Super>();
// 创建一个子类为 Sub 的列表 subList 并向其中添加两个新的 Sub 对象
List<Sub> subList = new ArrayList<>();
subList.add(new Sub());
subList.add(new Sub());
// 将 subList 赋值给 list 变量,因为 subList 是一个子类列表,可以赋值给泛型为 Super 的列表
list = subList;
System.out.println(list);
// 2、实现逆变
// 创建一个泛型为 Sub 的超类列表 list2,其类型为 List<? super Sub>
List<? super Sub> list2 = new ArrayList<Sub>();
// 创建一个超类为 Super 的列表 superList 并向其中添加两个新的 Super 对象
List<Super> superList = new ArrayList<>();
superList.add(new Super());
superList.add(new Super());
// 将 superList 赋值给 list2 变量,因为 superList 是一个超类列表,可以赋值给泛型为 Sub 的列表
list2 = superList;
System.out.println(list2);
}
public static void main(String[] args) {
test2();
}
}


小山code
- 粉丝: 1w+
最新资源
- 微信小程序(4).zip
- 测试方案评审过程.docx
- 中级职称考前复习之建筑结构专业PPT-ppt.ppt
- 2019造价部门年终工作总结范文5篇.docx
- 基于ElasticSearch的匹配搜索引擎搭建项目-全文检索-模糊匹配-相关性排序-分布式搜索-高性能查询-数据索引优化-实时搜索-多字段匹配-自定义评分-聚合分析-中文分词-停.zip
- odoo 微信小程序商城模块 (WeChat Mini Program for Odoo).zip
- 医院智能化弱电系统设计方案.doc
- 2019年天猫母婴洞察消费报告.pdf
- 渠道衬砌施工方案.doc
- 青蛙的故事——生活启迪.ppt
- 语言活动《分房子》.doc
- 微信小程序,仿Apple Music.zip
- 地铁工程安全质量和文明施工管理办法.doc
- [造价入门]2015年建设工程造价基础知识PPT讲义(名企编制-249页).ppt
- 中建某公司给排水管道内部培训.ppt
- PC微信小程序 wxapkg 解密.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈


