A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

Object[] objs = new Object[3];
String[] strs = (String[])objs;//编译通过,但是运行后无法转换

张老师说因为Object[] 不是String[] 的父类,所以不存在强转,但是为什么强转却通过了呢?

4 个回复

倒序浏览
你可以这样写好了
Object[] objs = new Object[n];
String[] strs = new String[n];
for(int i=0;i<n;i++)
{
strs[i]=(String)objs[i];
}
objs[i]元素类型是Object,通过强制转换成String类型的strs[i]元素
回复 使用道具 举报
  1. Object[] objs = new String[3];
  2. String[] array = (String[])objs;
复制代码
这样才可以强转
回复 使用道具 举报
Object[] 不是String[] 的父类,所以不存在强转,这是逻辑问题,而编译只检查语法问题。
在运行时才会检查逻辑问题
回复 使用道具 举报
这和Child extends Parent  一样   Person p=new Person();Child c=(Child)p道理一样,编译能通过,运行不能通过。Person[] p=new Person[3];Child[] c=(Child[])p也是如此。Person[] p=new Child[3];Child[] c=(Child[])p这样就没问题了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马