java – 为什么可以将泛型列表强制转换为其类型参数
发布时间:2020-12-15 04:53:15 所属栏目:Java 来源:网络整理
导读:为什么以下代码编译? 如果参数是a,为什么允许将通用列表转换为其类型参数 接口但不是通用的超级接口? 这是什么意思? //Connection can be substituted by any interfaceListConnection list = null;Connection c = (Connection) list; 解决方法 这与type
为什么以下代码编译?
如果参数是a,为什么允许将通用列表转换为其类型参数 接口但不是通用的超级接口? 这是什么意思? //Connection can be substituted by any interface List<Connection> list = null; Connection c = (Connection) list; 解决方法
这与type参数无关.这也有效:
List<String> list = null; Connection c = (Connection) list; 这是可能的,因为List是一种接口类型.列表引用可能包含一个实现List接口的对象,也是一个Connection(无论是类,接口),因此转换工作. 因此,由于演员可以工作,编译器允许它.它只会拒绝理论上不可能的强制转换,即在单独的继承层次结构中涉及具体类型: JComponent c = null; ArrayList l = (ArrayList) c; 您可以在Java Language Specification编译时查找哪些类型的演员表合法的确切规则 – 这是大约30行密集语言律师. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |