1 通配符 ?
我们想调用fun函数帮我们打印,但由于不知道Message具体是什么类型,所以我们可以使用 : ?即通配符
当我们将fun函数中改为Message<?>此时就不会报错
2 通配符的上界:
<? extends 上界>
Demo:<? extends Fruit>意思是传入的实参需要是 Fruit或者 Fruit的子类
当我们用通配符时,其接受结果应该是通配符的上界。因为无法确定返回结果具体是什么,所以要用父类接收
3 通配符的下界
<? super Fruit>
意思是传入的实参类型应该是Fruit或者Fruit的父类。
注意此时我们只能传入或者设置数据,但是不能接收数据,因为编译器无法准备知道Fruit的父类是谁。除非用Object接收。并且传入的参数应该是Fruit或者Fruit的子类
message代码
以上内容了解即可,不需要熟练掌握。
需要了解泛型的可以看之前博客泛型的介绍:
CSDN