《java编程思想》第十五章回顾

本章内容极为繁多。到目前为止都没有看完。同时感觉部分内容有些生僻。。所以先行总结了吧!

1、泛型实现了参数化类型的概念,使代码可以用于多种类型,而不是一个具体的接口或者类。

2、泛型类的形式是普通类后面加一个<T>,其中T就是类型参数。在泛型类的内部,如果声明了形如一个 private T a,这种,那么就是声明了一个T类型的a变量的意思。如果T是String,那么就是 String a;如果是int,就是int a;

3、泛型用于接口,成为生成器。(so泛型的一大用法是生成对象咯)

//: net/mindview/util/Generator.java
// A generic interface.
package net.mindview.util;
public interface Generator<T> 
{ T next(); } ///:~

这个接口的作用就是定义了带有T返回类型的next(),使得每一个产生的对象都是T类型。

4、定义泛型方法,只需将泛型参数列表置于返回值前。形如:public <T> void f(T x)。在使用泛型方法时,通常不必指明参数类型。我们可以像调用普通方法一样调用f()。对于泛型类,则必须指定类型参数的值。

5、java泛型是使用擦除实现的,当使用泛型的时候,任何具体的类型信息都将被擦除。因此List<String>和List<Integer>是相同类型(在jvm里都是List.class)。泛型类型只有在静态类型检查期间才出现。

6、所有的泛型类型都将被擦除,替换为他们的非泛型上界,未指明边界就被擦除为Object类型。

7、通配符部分见收藏的文章

8、任何基本类型都不能作为类型参数。可以自动包装机制部分解决这个问题,然而自动包装机制无法对数组适用(PS:也没有泛型数组)

9、自限定的类型,形如:

class SelfBounded<T extends SelfBounded<T>> {}

它会强制要求正在定义的类当做参数传给基类,即

 class A extends SelfBounded<A> {}

其参数的意义是保证类型参数与正在定义的类相同。其价值是产生协变参数类型:

https://blog.csdn.net/weixin_40134367/article/details/79472495(老实说,仍然不懂)

未完

猜你喜欢

转载自blog.csdn.net/leokingszx/article/details/88139056
今日推荐