我们通过给出需要或推荐可评估类型的地方的清单来得出结论。
- 实例测试必须针对可确定类型。
- 实例类型通常应该是可调整的类型。 (投射到不可辨认的类型通常会发出未经检查的警告。)
- 扩展
Throwable
的类不能参数化。 - 数组实例创建必须处于可修饰类型。
- 数组的指定类型必须是其静态类型的删除子类型(请参阅广告中的真理原则),并且公开暴露的数组应该是可确定类型的(请参阅不雅曝光原则)。
- 可变参数应该是可确定的类型。 (可变类型的变量将发出未经检查的警告。)这些限制来自泛型通过擦除来实现的事实,它们应该被视为我们在前一章探讨的易于进化的 价格。
为了完整性,我们还列出了与反射相关的限制:
- 类令牌对应于可重用类型,
Class<T>
中的类型参数应该是可重用类型。 (见7.2
节)
这些在下一章讨论。