加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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行密集语言律师.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读