Java中的通配符

摘要:
通配符使用“?”替换方法中的特定泛型类型。无论Person中的泛型类型如何更改,fun方法都不需要更改。事实上,通配符有两个子通配符。

一、通配符概念

其实.上很多技术点都是为了解决某一问题而出现的,那么我们在学习的过程中可以先提出问题,然后在使用我们的技术去解决。

DEMO:观察问题

Java中的通配符第1张Java中的通配符第2张

以上代码可以正常执行,但是如果泛型类中的类型改变之后发现了方法中的参数的泛型也需要改变,这就说明了fun方法依赖Person的泛型,这也是耦合度较高的一种体现,此时我们可以在方法的参数中使用通配符代替具体的泛型。通配符使用“?”即可。

DEMO:通配符解决问题

Java中的通配符第3张Java中的通配符第4张

此时使用了“?”在方法中替代具体的泛型类型,之后不管Person中的泛型如何改变,fun 方法都不需要改动,其实通配符还有两个子通配符。一个是通配符上限,一个是通配符下限。

二、通配符的上限

1、通配符上限: ? extends. 上限 类型。

DEMO:在方法中指定通配符的上限

Java中的通配符第5张Java中的通配符第6张

方法方法定义了上限之后:方法只能接受上限类型以及.上限类型的子类类型。除了方法的通配符可以定义上限之外类的泛型也可以定义上限。

DEMO:类的泛型上限

Java中的通配符第7张Java中的通配符第8张

类使用了泛型.上限之后实例化子类的时候指定的泛型的具体类型只能是泛型上限本类类型以及泛型上限类型的子类类型。

三、方法通配符的下限

定义方式: ? super‘ 下 限类型

DEMO:通配符下限类型

Java中的通配符第9张Java中的通配符第10张

使用了通配符下限之后:方法只能接受下限类型以及下限类型的父类类型作为泛型具体类型。类泛型有下限吗?类的泛型是没有下限的。

总结:

1、使用通配符“?”解决了方法对泛型类的依赖

2、通配符的.上限“? extends.上限类型”, 方法只能接受上限类型以及上限类型的子类类型,泛型类也可以设置上限。

3、通配符下限“?super 下限类型”,方法只能接受下限本类类型以及下限的父类类型,泛型类不可以设置下限。

详细的java系统视频免费学习地址

有完整的Java初级,高级对应的学习路线和资料!专注于java开发。分享java基础、原理性知识、JavaWeb实战、spring全家桶、设计模式、分布式及面试资料、开源项目,助力开发者成长!


欢迎关注微信公众号:码邦主

Java中的通配符第11张

免责声明:文章转载自《Java中的通配符》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇使用golang开发mqtt服务压力测试工具 清明Oracle SQL优化下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

通过实例学习C#开发中的泛型

C#中所谓泛型:即通过参数化类型来实现在同一份代码上操作多种数据类型。泛型编程是一种编程范式,它利用“参数化类型”将类型抽象化,从而实现更为灵活的复用。   C#泛型赋予了代码更强的类型安全,更好的复用,更高的效率,更清晰的约束。   C#泛型机制简介   C#泛型能力由CLR在运行时支持,区别于C++的编译时模板机制,和java的编译时的“搽拭法”。这...

Java泛型详解

泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。 假定我们有这样一个需求:写一个排序方法,能够对整形数组、字符串数组甚至其他任何类型的数组进行排序,该如何实现? 答案是可以使用 Java 泛型。 使用 Java 泛型的概念,我们可以写一个泛型方法来对一个对象数组排序。然后,调用该泛型方法来对整型数组、浮点数数组、字符串数组等进行排序。...

【c#基础】泛型

1:减少代码的选项可以是用Object类,也可以使用泛型 但是Object类进行类型传递不是类型安全的。泛型类使用泛型类型保证了类型安全。 泛型类泛型方法泛型接口、结构、委托 泛型优点: 1:性能 装箱和拆箱很容易使用,但性能损失比较大。 泛型的话在编译的时候就会动态生成我们定义他的类型,这样就不用进行装箱和拆箱。 var list=new List<...

PHP站内搜索:多关键字、加亮显示

一、SQL语句中的模糊查找       主要通过LIKE(不区分大小写)关键字实现模糊查找。LIKE条件一般用在指定搜索某字段的时候, 通过"%"或者" _" 通配符的作用实现模糊查找功能,通配符可以在字段前面也可以在后面或前后都有。只通过LIKE是无法实现模糊查找的,因此通配符的作用不可忽略。下面是三个实例:搜索以PHP开头:SELECT * FROM ...

c# 泛型&amp;lt;T&amp;gt;类型参数T的约束where

在定义泛型类时,可以对客户端代码能够在实例化类时用于类型参数的类型种类施加限制。如果客户端代码尝试使用某个约束所不允许的类型来实例化类,则会产生编译时错误。这些限制称为约束。约束是使用 where 上下文关键字指定的。下表列出了六种类型的约束:   约束 说明 T:结构 类型参数必须是值类型。可以指定除 Nullable 以外的任何值类型。有关更...

配置typeAliasesPackage支持通配符包路径扫描

mybatis的xml文件中需要写类的全限定名,较繁琐,可以配置自动扫描包路径给类配置别名,两种配置方式。 方式一: mybatis-config.xml中配置 <typeAliases>   <package name="com.xiaomu.context.config.model"/> </typeAliases&g...