Object[] a = { "a", "b", "c" };
String[] b = { "q", "a", "f" };
Object[] os = (Object[]) b; //向上转型,可以输出,没有问题
System.out.println(os);
System.out.println("------------");
String[] as = (String[]) a; //向下强转,编译没有任何问题,运行报错???
System.out.println(as);
报错:
java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
谢谢!!!
异常提示不可以直接转,换这样写String[] as = Arrays.asList(a).toArray(new String[0]);
楼主你首先异常那里概念没有弄清,在java中分为运行时异常runtime Exception,以及一般的Exception,如图
你这个就属于运行时异常,编译是不会报错的,编译不报错不代表没有错误,你写个int a =1;int b = 0; 输出 a/b编译也不会出粗,但是运行就报除数不为0异常了。
追问我的重点是,为什么向下转型会报错?
追答楼上已经给出解释了( 猫是动物,但是动物不一定是猫啊……)