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;

目录
打赏
0
0
0
0
2
分享
相关文章
|
9月前
|
🌱Java零基础 - 泛型详解
【10月更文挑战第7天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
77 1
Java基础-泛型机制
Java基础-泛型机制
74 0
|
9月前
|
Java集合定义其泛型
Java集合定义其泛型
53 1
java数据结构泛型
java数据结构泛型
74 5
【用Java学习数据结构系列】初识泛型
【用Java学习数据结构系列】初识泛型
62 2
|
9月前
|
【Java】什么是泛型?什么是包装类
【Java】什么是泛型?什么是包装类
71 0
Java中的泛型
【9月更文挑战第15天】在 Java 中,泛型是一种编译时类型检查机制,通过使用类型参数提升代码的安全性和重用性。其主要作用包括类型安全,避免运行时类型转换错误,以及代码重用,允许编写通用逻辑。泛型通过尖括号 `&lt;&gt;` 定义类型参数,并支持上界和下界限定,以及无界和有界通配符。使用泛型需注意类型擦除、无法创建泛型数组及基本数据类型的限制。泛型显著提高了代码的安全性和灵活性。
105 8
Java——包装类和泛型
包装类是Java中一种特殊类,用于将基本数据类型(如 `int`、`double`、`char` 等)封装成对象。这样做可以利用对象的特性和方法。Java 提供了八种基本数据类型的包装类:`Integer` (`int`)、`Double` (`double`)、`Byte` (`byte`)、`Short` (`short`)、`Long` (`long`)、`Float` (`float`)、`Character` (`char`) 和 `Boolean` (`boolean`)。包装类可以通过 `valueOf()` 方法或自动装箱/拆箱机制创建。
113 9
Java——包装类和泛型
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
String常量池、String、StringBuffer、Stringbuilder有什么区别、List与Set的区别、ArrayList和LinkedList的区别、HashMap底层原理、ConcurrentHashMap、HashMap和Hashtable的区别、泛型擦除、ABA问题、IO多路复用、BIO、NIO、O、异常处理机制、反射
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问