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;

目录
相关文章
|
8天前
|
Java 编译器
Java“返回类型为 void 的方法不能返回一个值”解决
在 Java 中,如果一个方法的返回类型被声明为 void,那么该方法不应该包含返回值的语句。如果尝试从这样的方法中返回一个值,编译器将报错。解决办法是移除返回值语句或更改方法的返回类型。
|
5天前
|
存储 安全 Java
🌱Java零基础 - 泛型详解
【10月更文挑战第7天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
6 1
|
10天前
|
设计模式 Java
Java“不能转换的类型”解决
在Java编程中,“不能转换的类型”错误通常出现在尝试将一个对象强制转换为不兼容的类型时。解决此问题的方法包括确保类型间存在继承关系、使用泛型或适当的设计模式来避免不安全的类型转换。
|
7天前
|
Java
Java 中锁的主要类型
【10月更文挑战第10天】
|
14天前
|
安全 Java
Java“不兼容类型” 错误怎么查找解决
在 Java 中遇到“不兼容类型”错误时,首先理解错误信息,它表明试图将一种类型赋给不兼容的类型。检查代码中类型不匹配的赋值、方法调用参数类型不匹配、表达式类型不兼容及泛型类型不匹配等问题。解决方法包括进行类型转换、修改代码逻辑、检查方法参数和返回类型以及处理泛型类型不匹配。通过这些步骤,可以有效解决“不兼容类型”错误,确保代码类型兼容性良好。
|
13天前
|
Java 语音技术 容器
java数据结构泛型
java数据结构泛型
23 5
|
10天前
|
存储 Java 编译器
Java集合定义其泛型
Java集合定义其泛型
14 1
|
13天前
|
Java 程序员 编译器
Java中的异常类型
Java中的异常类型
19 3
|
13天前
|
存储 Java 编译器
【用Java学习数据结构系列】初识泛型
【用Java学习数据结构系列】初识泛型
16 2
|
13天前
|
Java 开发者
Java“类 Y 中的方法 X 不能应用于给定类型”解决
在Java中遇到“类Y中的方法X无法应用于给定类型”的错误时,通常是因为方法调用时的参数类型与定义不符。解决此问题需检查方法签名,确保传递的参数类型正确无误,或使用显式类型转换以匹配方法所需的参数类型。这种错误提示帮助开发者及时修正类型不匹配的问题。