(1)
1.public class Test {
2.public static void main(String arg[]){
3.class Foo{
4.public int i = 3;
5.}
6.Object o = (Object)new Foo();
7.Foo foo = (Foo)o;
8.System.out.println(" i = " + foo.i);
9.}
10.}
What is the result?
A. i = 3
B. Compilation fails. 编译错误
C. A ClassCastException is thrown at line 6. 第6行抛出异常
D. A ClassCastException is thrown at line 7. 第7行抛出异常
Answer:A
官方答案是A,但是实际编译过程中出现的异常,我真不知道该选什么了。
大家帮助我分析讨论一下。我着急解决这个问题
----------------解决方案--------------------------------------------------------
答案当然是A啦,你为什么会编译错误 呢,我这里都可以编译通过的
----------------解决方案--------------------------------------------------------
奇了怪了,这次没有出现异常。
不过,很感谢斑竹
----------------解决方案--------------------------------------------------------
上次有异常,可能是你的输入有误吧,以后输入可要小心一点了
----------------解决方案--------------------------------------------------------
我这里也可以编译通过...
----------------解决方案--------------------------------------------------------
能说明一下这类问题的解题思路吗?
----------------解决方案--------------------------------------------------------
逐步分析就行了
----------------解决方案--------------------------------------------------------
可是下面这个程序为什么能通过编译,但是运行时出现异常呢:
class MyClass
{
}
class A extends MyClass
{
}
class B extends MyClass
{
}
class c
{ public static void main(String args[])
{
MyClass m=new MyClass();
A a=(A)m;
}
}
Exception in thread "main" java.lang.ClassCastException: MyClass
at c.main(text.java:17)
Press any key to continue...
----------------解决方案--------------------------------------------------------
当然了你把一个父类强制转化为子类 当然要异常了 就好比
车是父类 而自行车是子类 你可以说一个自行车就是车 但你不能说一个车就是自行车 这样不就有问题了
----------------解决方案--------------------------------------------------------
楼上分析得有道理
转换当被转换的对象包含生成的对象的时候,这个时候是可以转换的,否则就不可以
----------------解决方案--------------------------------------------------------