赞
踩
目录
上一篇我们学习了如何定义泛型和如何使用泛型,今天我们来学习一些泛型中的其他知识点,泛型通配符和泛型边界
在我们进行封装时,如果我们不能在封装时确定数据的类型,但是可以在创建对象时确定数据的类型可以使用泛型,但是也可能会出现在创建对象时也不能确定类型的情况,这种情况一般出现在二次封装时
- class A<T>{
- T i ;
-
-
- }
-
- class A{
- A< object> a ;
- }
在上面的代码中,我在b类中把a类型当成一个属性,这时我是不知道a类的泛型应该是什么类型的
如果我们使用object就会报错,所以如果遇到这种情况我们就要使用泛型通配符
- class A<T>{
- T i ;
-
-
- }
-
- class A{
- A< ?> a ;
- }
我们使用?作为一个展位符,当我们可以确定泛型时在确定泛型的数据类型即可
我们会在应该确定泛型的数据类型却无法确定时使用泛型通配符,而当我们不能确定泛型但是能给出一个范围的时候,就可以使用泛型的边界
- class A extends {}
-
- class B extends A{}
-
- class C<T> extends B{
-
- C<? extends A> c2 ;
-
-
- }
上面的代码就是泛型的边界的语法格式,表示的意思是C的泛型是不确定的(?)但是他必须是A类或者继承A类也就是必须是A本类或者是A的子类,除了这种写法还有一种写法
- class A extends {}
-
- class B extends A{}
-
- class C<T> extends B{
-
- C<? super B> c2 ;
-
-
- }
这种写法就是,泛型的类型必须是B本类或者是B的父类,如果不在这个范围中就不能作为泛型传递
关于泛型我们就学到这里。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。