8.6.1 不能用基本类型实例化类型参数
没有 Pair
8.6.2 运行时类型查询只适用于原始类型
得到编译器的错误:
if (a instanceof Pair<String>)if (a instanceof Pair<T>)
得到警告:
Pair<String> p = (Pair<String>) a;
getClass 是相等的:

8.6.3 不能创建参数化类型的数组
var table = new Pair<String>[10]; // ERROR
类型擦除使 table 的类型变为 Pair[]:
// 可转换为 Object[]Object[] objarray = table;objarray[0] = "Hello"; // ERRORobjarray[0] = new Pair<Employee>(); // 与 Pair<String> 不匹配
声明还是合法的:
Pair<String>[]// 不能初始化, new Pair<String>[10]
8.6.4 Varargs 警告
不能手动创建泛型数组, 但是可以使用 Varargs 创建的泛型数组:
public static <T> void addAll(Collection<T> coll, T... ts) {for (T t : ts) {coll.add(t);}}
Java 虚拟机会创建 Pair

抑制警告:
// 使用注解@SuppressWarnings("unchecked")public static <T extends Collection> void addAll(Collection<T> coll, T... ts) {for (T t : ts) {coll.addAll(t);}}
8.6.5 不能实例化类型变量
public Pair() {first = new T(); // ERRORsecond = new T(); // ERROR}
8.6.6 不能构造泛型数组

8.6.7 泛型类的静态上下文中类型变量无效

8.6.8 不能抛出或捕获泛型类的实例
同时不能扩展 Throwable:

catch 中不能使用类型变量:

在异常规范中可以使用类型变量:

上面截图, 书中的代码没写明白.
8.6.9 可以取消对检查型异常的检查

