Java基础“泛型”

  什么是泛型?

  泛型实现了参数化类型的概念,使代码可以应用于多种类型。泛型最初的目的是希望类或方法能够具备最广泛的表达能力。它是通过解耦类或方法,与使用的类型之间的约束来实现。

  一般类和方法只能使用具体类来表示成员,要么就编写可以应用与多种类型的代码,这种方式对代码的束缚会很大,使用泛型能够很好的解决这个问题。

  泛型的简单使用:

    使用泛型一般在类名之前或在接口名前定义“<T>”;其中“<>”是固定的语法,“<....>”里可以有多个泛化的类型,类型的定义一般用大写的字母定义。

    

  对于Java容器类,泛型的使用必不可少,因为容器类存储的元素不可能是定制化的为某一个对象或者某一个具体的继承链,可能有人说,以Object进行存储是可以实现不同元素的存储。用Object是可以,但是使用Object存储,是属于“向上转型”;当你要得到具体类型时,需要“向下转型”,这个时不安全的。容器是存储某一类型的集合,当存储时,是固定了存储哪个类型的数据,用Object做存储,没有办法判断存储的类型是不是指定存储类型,都不会提示。

  泛型的使用能够让类得到最广泛的使用场景,同时也指定了类的具体类型,这是它最大的好处。

  在泛型表达式里定义多个对象,被称为“元组”。它是将多个对象封装在一个单一的对象中。元组的定义保持了元素的次序,比如"<A,B,C>"。

  泛型方法:

  泛型在方法中使用。首先值得注意的是,基本类型是无法作为泛化的参数类型。之所以能用,是因为在Java SE5之后具备了自动打包和拆包的功能。方法使用方向可以作为参数和返回值使用,泛型方法的使用与其所在的类是不是泛型没有关系,也就是说方法也可以自己定义泛型并使用的。泛型方法的使用能够独立类而产生变化,如果因为类型原因方法无法进行多元化,从而只能增加扩展,这种行为不是一个好的解决方式,值得注意的问题,static方法是无法访问泛型类的泛型参数的,static方法要使用泛型参数,必须称为泛型方法。

关于泛型的边界问题后面更新。

猜你喜欢

转载自www.cnblogs.com/liaobudao/p/11273014.html