Java强制类型转换

qq_33546703 2016-11-18 09:37:37
代码如下:

public class Test
{

public static void main(String[] args)
{
Object[] mm = new Object[2];
mm[0] = new String("123");
mm[1] = new String("456");
System.out.println(mm[0]);//ok

String str = (String)mm[0];
System.out.println(str);//ok

String []strs = (String[])mm;//throw ClassCastexpection
System.out.println(strs[0]);
}

}

请问什么一个元素强制类型转换可以,数组强制类型转换却不行?
...全文
162 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
紫色动力 2016-11-18
  • 打赏
  • 举报
回复
将一个子类的引用赋给一个超类变量,是可以的。但将一个超类的引用赋给一个子类变量,必有进行类型转换,这样才能通过运行时的检查。 试图在继承链上进行向下类型转换,JVM会报告这个错误,并产生ClassCastException异常。如果没有捕获这个异常,程序就会终止。所以在进行类型转换之前,最好先检查下能否转换。建议使用instanceof运算符。

if(object1 instanceof object2)
{
      //进行转换
}
当作看不见 2016-11-18
  • 打赏
  • 举报
回复
强制类型转换是基础类型有这个方法。但是数组是没有这个方法的。 就像字符串 + 拼接一样。 为什么可以这样操作 。由于在解析的时候,有+ 转义的方法 ,所以可以执行 。但是数组没有实现这个
XxiaoxiaoL 2016-11-18
  • 打赏
  • 举报
回复
看看java的类型转换的知识吧!比如你能说苹果是水果,但是你能说水果就是苹果吗?

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧