|
| 1 | +《《《 [返回首页](../README.md) <br/> |
| 2 | +《《《 [上一节](05_Reflection_for_Generics.md) |
| 3 | + |
1 | 4 | ## 反映泛型类型
|
2 | 5 |
|
3 | 6 | 反射库提供了一个 `Type` 接口来描述一个通用类型。 有一个类实现了这个接口和四个其他接口来扩展它,对应于五种不同的类型:
|
|
16 | 19 |
|
17 | 20 | 方法可用于将类的超类和超接口作为类型返回,并访问字段的泛型类型,构造函数的参数类型以及方法的参数和结果类型。
|
18 | 21 |
|
19 | | -您还可以提取代表类或接口声明或泛型方法或构造函数的形式参数的类型变量。类型变量的类型需要一个参数,并写入 `TypeVariable<D>`,其中 `D` 表示声明类型变量的对象的类型。因此,类的类型变量具有类型 `TypeVariable<Class<?>>`,而泛型方法的类型变量具有类型 `TypeVariable<Method>`。可以说,类型参数是令人困惑的,并不是非常有用。由于它对6.6节中描述的问题负责,因此 `Sun` 可能会在将来删除它。 |
| 22 | +您还可以提取代表类或接口声明或泛型方法或构造函数的形式参数的类型变量。类型变量的类型需要一个参数,并写入 `TypeVariable<D>`,其中 `D` 表示声明类型变 |
| 23 | +量的对象的类型。因此,类的类型变量具有类型 `TypeVariable<Class<?>>`,而泛型方法的类型变量具有类型 `TypeVariable<Method>`。可以说,类型参数是令人 |
| 24 | +困惑的,并不是非常有用。由于它对 `6.6` 节中描述的问题负责,因此 `Sun` 可能会在将来删除它。 |
20 | 25 |
|
21 | 26 | 例 `7-5` 使用这些方法打印出与类关联的所有标题信息。这里有两个使用例子:
|
22 | 27 |
|
|
31 | 36 | implements java.lang.Comparable<E>,java.io.Serializable
|
32 | 37 | ```
|
33 | 38 |
|
34 | | -例 `7-5` 中的代码冗长而直接。 它包含打印类的每个组件的方法:它的超类,它的接口,它的字段和它的方法。 代码的核心是 `printType` 方法,它使用级联的实例测试根据上述五种情况对类型进行分类。 |
| 39 | +例 `7-5` 中的代码冗长而直接。 它包含打印类的每个组件的方法:它的超类,它的接口,它的字段和它的方法。 代码的核心是 `printType` 方法,它使用级联的实 |
| 40 | +例测试根据上述五种情况对类型进行分类。 |
35 | 41 |
|
36 | | -例 `7-5`。 如何操作Type类型 |
| 42 | +例 `7-5`。 如何操作 `Type` 类型 |
37 | 43 |
|
38 | 44 | ```java
|
39 | 45 | import java.util.*;
|
|
143 | 149 |
|
144 | 150 | 如果 `Type` 接口有一个 `toGenericString` 方法,那么大部分代码都是不必要的。 `Sun` 正在考虑这一改变。
|
145 | 151 |
|
146 | | - |
147 | | - |
148 | | - |
149 | | - |
150 | | - |
151 | | - |
152 | | - |
153 | | - |
154 | | - |
155 | | - |
156 | | - |
157 | | - |
158 | | - |
159 | | - |
160 | | - |
161 | | - |
162 | | - |
163 | | - |
164 | | - |
165 | | - |
166 | | - |
167 | | - |
168 | | - |
169 | | - |
170 | | - |
171 | | - |
172 | | - |
173 | | - |
174 | | - |
175 | | - |
176 | | - |
177 | | - |
178 | | - |
179 | | - |
180 | | - |
181 | | - |
| 152 | +《《《 [下一节](../ch08/00_Effective_Generics.md) <br/> |
| 153 | +《《《 [返回首页](../README.md) |
0 commit comments