hooyantsing's Blog

第八章_泛型程序设计

字数统计: 358阅读时长: 1 min
2020/06/05

第八章 泛型程序设计

8.2 定义简单泛型类

374e7eeebede6c2e8535bf41c4a2850b.png

规范:

  • E
  • K
  • T

8.3 泛型方法

0d2904720d4d9f1ef8a46b917549576b.png

编译器对一个泛型方法调用最终推断出那种类型?

5b9aa9146bccf7dd90ca486adc19b2bc.png

8.4 类型变量的限定

要求进来的类型必须实现某个接口进行限制。没有实现的直接编译报错。

f7fb094483a5d46eef22f3651bd073e6.png

b6c486ef5d7edeaf60d2340d0fe7e86f.png

8.5.1 类型擦除

类型擦除 - 简书

Java的类型擦除 - 简书

Java虚拟机不认识泛型,因此在编译时根据泛型信息做类型变量替换,如果对泛型的引用还要做强制类型转换。

1.如果泛型T无限定变量,直接用Object替换。

776e46cdc4406838b3eb995a43dfce37.png

2.如果泛型T有限定变量,则替换成父类的类型。

fce2d90bc408bf637197c7d887ff3f8a.png

有关Java泛型转换的事实:

99011d14fd60bf171d4bd841527f5617.png

8.6 约束与局限性

[没懂] 这一部分比较庞大且晦涩难懂。

使用Java泛型时需要考虑的一些限制,大多数限制都是由类型擦除引起的。

**938d142675cfa346bf46ed6d13b7394d.png

**

6641f9a0abca7697f26dd08219bb661c.png

b79346920f25f6e9cb8399cc2a214c0b.png

d74312ad1315694c3088ab061e75a5fe.png

d8079b6ea9b1aba2a3ce4403dae9a1ed.png

e91aee11e168d3e6c97edc1aacab1565.png

e59627bb0e3faa341ad3c3ee7e765874.png

cae2763f2849cca7fc71f8196104a0e2.png

8.7 泛型类型的继承规则

dd0140ca8a6bee02faa0be35eec22b9f.png

c9a48bfe5cbbee4184b2880adcd12d12.png

ce6d041c45625b84b6e5382b2ec14252.png

05caad2259a1c051fcea81084d4ece23.png

8.8.1 通配符概念

2b6595f033e553b8db81c0ed9e133a68.png

<? extends Employee>限定Employee的子类,限定”上界”

6077cf38f1c3711b48f21cc848a93423.png

<? super Manager>限定Manager的超类,限定”下界”

85c3f62b1df32d3cb3b771c33fb85df1.png

如何理解 Java 中的 <T extends Comparable<? super T>>

如何理解 Java 中的 <T extends Comparable<? super T>> - 小米干饭 - 博客园

8.8.3 无限定通配符

e972315072d0d554a51e0b630d247bbc.png

8.8.4 通配符捕获

752ce415e762b166b0883c136f0d8fed.png

f24899ac570ac81cad36022c60098651.png

CATALOG