难以理解Java规范
|
阅读 Java SE规范中的参考类型转换时:
我一直在寻找以下条件:
有谁能举个例子说明这种情况? 编辑: 为了进一步澄清我引用的文章,请参阅本link的第5.5.1节 解决方法条件的第一部分要求S<:T:S:> T,即一个类必须继承另一个类;否则会出现编译时错误.所以你的基本设置如下:class T {
}
class S extends T {
}
到目前为止一直很好:允许你将S转换为T,因为这两个类之间存在适当的子类关系. 现在让我们看看条件的第二部分:两个类必须具有不同的超类型.由于只允许一个超类,因此常见的超类需要是一个接口.以下是如何打破规则的第二部分的一个示例: // X is List<String>
class T implements List<String> {
}
// Y is List<Integer>
class S extends T implements List<Integer> {
}
X和Y的擦除需要实现List< ???>,但是列表必须在不同类型上参数化.这会导致编译时错误,因为S无法同时满足List< String>和列表<整数>接口. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
