时间真的是很快,又到了周末,又到了每周分享的时刻。本周将继续讲解java的泛型,上周分享的文章貌似效果不是很好。本周呢还是会继续下去,如果看的人不是很多就当作自己的一个学习笔记吧。
首先我们来看一个东西,泛型继承:
1.泛型继承规则
public class A {
}
public class B extends A {
}
public class Pair<T> {
}
我们先定义一个类A,然后再定义一个类B,我们让B继承A。再定义一个泛型类Pair。
我们使用一下:
大家发现没有,这是个很有意思的事情。报错了,说明虽然B是A的子类,但是Pair并不是Pair的子类。
我们再来看另外一种情况:
public class Pair2<T> extends Pair<T> {
}
这样就可以实现泛型类的继承,但是要注意的是:传入的类型必须保持一致。
2.通配符(重点)
首先还是上代码,直接讲根本没有办法形象的讲清楚。
public class Apple extends Fruit {
}
public class Orange extends Fruit {
}
public class Fruit extends Food {
}
public class Food {
}
public class Test<T> {
}
苹果,橙子继承水果,水果继承食物。这个都很简单易懂。
重点关注一下<? extends Fruit>代表什么,很简单,在println方法上,传入的参数是Test类型。明白了这一点就很好办了,? extends Fruit其实就是传入的这个类型是Fruit的子类或者本身,有点<=的意思。
通配符有两种情形,接下来我们看另一种情形:
一样的意思:>=。