1、通配符概念java

其实.上不少技术点都是为了解决某一问题而出现的,那么咱们在学习的过程当中能够先提出问题,而后在使用咱们的技术去解决。面试

DEMO:观察问题spring

java string 包 通配符 java通配符?_泛型类

java string 包 通配符 java通配符?_java中的通配符_02

以上代码能够正常执行,可是若是泛型类中的类型改变以后发现了方法中的参数的泛型也须要改变,这就说明了fun方法依赖Person的泛型,这也是耦合度较高的一种体现,此时咱们能够在方法的参数中使用通配符代替具体的泛型。通配符使用“?”便可。设计模式

DEMO:通配符解决问题微信

java string 包 通配符 java通配符?_子类_03

java string 包 通配符 java通配符?_java string 包 通配符_04

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

2、通配符的上限ide

一、通配符上限: ? extends. 上限 类型。学习

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

java string 包 通配符 java通配符?_泛型_05

java string 包 通配符 java通配符?_子类_06

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

DEMO:类的泛型上限

java string 包 通配符 java通配符?_java中的通配符_07

java string 包 通配符 java通配符?_泛型_08

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

3、方法通配符的下限

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

DEMO:通配符下限类型

java string 包 通配符 java通配符?_java string 包 通配符_09

java string 包 通配符 java通配符?_java中的通配符_10

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

总结:

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

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

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

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