《Java编程思想》 第十五章 泛型 记录

  • 在面向对象编程语言中,多态算是一种泛化机制。
  • 泛型实现了参数化类型的概念,使代码可以应用于多种类型。“泛型”这个术语的意思是:“适用于许多许多类型”。
  • 对Java而言,泛型确实是一种很有益的补充。在你创建参数化类型的一个实例时,编译器会为你负责转型操作,并且保证类型的正确性。

2. 简单泛型

  • 泛型的主要目的之一就是用来制定容器要持有什么类型的对象,而且由编译器来保证类型的正确性。
  • Java泛型的核心概念:告诉编译器想使用什么类型,然后编译器帮你处理一切细节。
  • 元组,它是将一组对象直接打包存储于其中一个单一对象。这个容器对象允许读取其中元素,但是不允许向其中存放新的对象。
  • final声明能够保护public元素。
public class TwoTuple<A,B>{
    public final A first;
    public final B second;
    public TwoTuple(A a,B b){
        first = a;
        second = b;
    }
}
  • 有了泛型,就可以很容易创建元组,令其返回一组任意类型的对象。
  • 可以利用继承机制实现长度更长的元组。

3. 泛型接口

  • Java泛型的一个局限性:基本类型无法作为类型参数。不过,Java具备了自动打包和自动拆包的功能,可以很方便地在基本类型和其相应的包装器类型之间进行转换。

4. 泛型方法

  • 泛型可应用于整个类上,同样可以在类中包含参数化方法,而这个方法所在的类可以是泛型类,也可以不是泛型类。也就是说,是否拥有泛型方法,与其所在的类是否是泛型没有关系。
  • 泛型方法使得该方法能够独立于类而产生变化。无论何时,只要你能做到,你就应该尽量使用泛型方法。也就是说,如果使用泛型方法可以取代将整个类泛型化,那么就应该只使用泛型方法,因为它可是使事情更清楚明白。另外,对于一个static的方法而言,无法访问泛型类的类型参数,所以,如果static方法需要使用泛型能力,就必须使其成为泛型方法。
  • 当使用泛型类时,必须在创建对象的时候指定类型参数的值,而使用泛型方法的时候,通常不必指明参数类型,因为编译器会为我们找出具体类型,这称为类型参数推断。
  • 类型推断只对赋值操作有效,其他时候并不起作用。如果你将一个泛型方法调用的结果作为参数,传递给另一个方法,这时编译器并不会执行类型推断。在这个情况下,编译器认为:调用泛型方法后,其返回值被赋给一个Object类型的变量。
发布了57 篇原创文章 · 获赞 11 · 访问量 9872

猜你喜欢

转载自blog.csdn.net/qq_36160730/article/details/99226466
今日推荐