Java泛型——类型通配声明

简介: Java泛型——类型通配声明

一、引入

同一泛型类,如果实例化时给定的实际类型不同,则这些实例的类型是不兼容的,不能相互赋值
泛型类实例之间的不兼容性会带来使用的不便,我们可以使用泛型通配符(?)声明泛型类的变量。
Cls1 c1 = new Cls1(10);
Cls1 c2 = new Cls1(10.12);
Cls1 c3 = new Cls1(1);

c1 = c2; //不能使用
c3 = c1; //不能使用

二、通配符使用

应用场景:不知道返回来是一个什么类型,需要一个变量来接收返回

“?”代表任意一个类型
Cls1 c1 = new Cls1(10);
Cls1 c2 = new Cls1(10.12);
Cls1 c3 = new Cls1(new Dog());
Cls1<?> c4; //通配符

c4 = c3;
c4 = c2;
c4 = c1;

和限制泛型上下限相似,同样可以使用extends限定通配类型
Cls1 c1 = new Cls1(10);
Cls1 c2 = new Cls1(10.12);
Cls1 c3 = new Cls1(new Dog());
Cls1<? extends Animal> c4; //通配符

c4 = c3; //只有这条可以
//c4 = c2;
//c4 = c1;

还可以使用super将通配符匹配类型限定为某个类型的下限
Cls1 c1 = new Cls1(10);
Cls1 c2 = new Cls1(10.12);
Cls1 c3 = new Cls1(new Dog());
//Cls1<? extends Animal> c4; //通配符
Cls1<? super Dog> c4;

c4 = c3; //只有这条可以
//c4 = c2;
//c4 = c1;

目录
相关文章
|
2小时前
|
Java 索引
【JAVA基础篇教学】第七篇:Java异常类型说明
【JAVA基础篇教学】第七篇:Java异常类型说明
|
2小时前
|
安全 Java 程序员
Java 泛型
Java 泛型
13 0
|
2小时前
|
Java 编译器 C语言
【Java开发指南 | 第五篇】Java变量类型、参数变量及局部变量
【Java开发指南 | 第五篇】Java变量类型、参数变量及局部变量
9 3
|
2小时前
|
存储 安全 Java
掌握8条泛型规则,打造优雅通用的Java代码
掌握8条泛型规则,打造优雅通用的Java代码
掌握8条泛型规则,打造优雅通用的Java代码
|
2小时前
|
Java
JAVA难点包括异常处理、多线程、泛型和反射,以及复杂的分布式系统知识
【5月更文挑战第2天】JAVA难点包括异常处理、多线程、泛型和反射,以及复杂的分布式系统知识。入坑JAVA因它的面向对象特性、平台无关性、强大的标准库和活跃的社区支持。
38 2
|
2小时前
|
Java
Java String类型转换成Date日期类型
Java String类型转换成Date日期类型
|
2小时前
|
关系型数据库 MySQL Java
Java时间转换为MySQL中的INT类型时间戳
Java时间转换为MySQL中的INT类型时间戳
|
2小时前
|
Java 编译器
【Java探索之旅】解密Java中的类型转换与类型提升
【Java探索之旅】解密Java中的类型转换与类型提升
19 0
|
2小时前
|
安全 Java 编译器
【JAVA】泛型和Object的区别
【JAVA】泛型和Object的区别
|
2小时前
|
安全 Java 程序员
Java 泛型类型:变幻中的不变性
【4月更文挑战第21天】
8 1
Java 泛型类型:变幻中的不变性