目录
一、泛型的理解
二、使用
三、自定义泛型结构
四、细节
五、泛型方法
六、泛型在继承方面的体现
七、通配符的使用
一、泛型的理解
所谓泛型就是允许在定义类、接口时通过一个标识表示类中某个属性的类型或者是某个方法的返回值及参数类型。这个类型参数将在使用时确定。
二、使用1.集合中使用泛型
ArrayList
2.嵌套泛型
Set
3.总结
①集合接口或集合类在JDK5.0时都修改为带泛型的结构。
②在实例化集合类时,可以指明具体的泛型类型。
③指明完以后,在集合类或接口时内部结构使用到类的泛型的位置都指定为实例化时的具体类型。
④泛型的类型必须是类,不能是基本数据类型,用到基本数据类型就用想对应的替换。
⑤如果实例化时未用泛型,默认类型为Object类型。
三、自定义泛型结构泛型类、泛型接口、泛型方法
1.泛型类
public class Order{ String name; T order t; }
实例化时,给T赋值,若未赋值,则默认为object,不建议不赋值。
2.子类继承泛型类
①子类在继承带泛型的父类时,指明了泛型类型,则实例化子类对象时,不再需要指明泛型。
class Suborder extends Order{ }
当Suborder,Order
②SubOrder
class SubOrderextends Order { }
①②总结:
泛型父类只能由泛型子类或普通子类继承。
普通父类只能由普通子类或泛型子类继承。
四、细节①
②写泛型类的构造器时不要加泛型。
③泛型不同的引用,不能相互赋值。
④泛型要么一律用,要么一律不用。
⑤泛型类/接口中的静态方法,不能用泛型类型。
⑥异常类不能是泛型类。
⑦泛型数组:T[] arr = (T[])new Object[10];
五、泛型方法在方法中出现了泛型的结构,泛型参数与类的泛型参数没有任何关系。即泛型方法所属的类是不是泛型都没有关系。在调用方法的时候指明泛型的具体类型。
格式:
public方法体
泛型方法可以声明为静态。原因:泛型参数在调用方法时确定的并非在实例化类时确定。
个人理解:Object是各种类的对象都可以,泛型是指定某一类,可以更好地体现封装性。
六、泛型在继承方面的体现类A是类B的父类,G和G不具备子父类关系,二者是并列关系。类A是类B的父类,A
1.?的使用
List> list = null; list = new ArrayList(); list = new ArrayList ();
G(A)与G(B)的公共父类G(?)。
对于List>就不能向其内部添加数据了。除了添加null之外。
对于List>允许读取数据,返回Object类型。
2.有限制条件的通配符的使用。
?extend Person 等价于 ?<= Person。即调用后返回的接收类型最小是Person。
? super Person 等价于 ?>= Person.即接收类型只为Object。
例如:
List extend Person>等价于List<*> *最大为Person,其余全是Person的父类。
注意:父类转为子类的强制转换前提是:子类已经转为父类了,此时父类才可以转为子类。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)