当前位置: 代码迷 >> Java相关 >> [求助]一道JAVA强制类型转换的考题
  详细解决方案

[求助]一道JAVA强制类型转换的考题

热度:125   发布时间:2006-05-05 12:28:00.0
[求助]一道JAVA强制类型转换的考题

(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,但是实际编译过程中出现的异常,我真不知道该选什么了。
大家帮助我分析讨论一下。我着急解决这个问题

搜索更多相关的解决方案: JAVA  考题  类型  

----------------解决方案--------------------------------------------------------

答案当然是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...


----------------解决方案--------------------------------------------------------

当然了你把一个父类强制转化为子类 当然要异常了 就好比
车是父类 而自行车是子类 你可以说一个自行车就是车 但你不能说一个车就是自行车 这样不就有问题了


----------------解决方案--------------------------------------------------------

楼上分析得有道理
转换当被转换的对象包含生成的对象的时候,这个时候是可以转换的,否则就不可以


----------------解决方案--------------------------------------------------------
  相关解决方案