jon*_*ejj 4 java casting runtime-error compiler-warnings
为什么以下java代码没有生成编译器警告,说"从SuperClass到SomeBaseClass的不安全强制转换"?
public abstract SuperClass
{
static SuperClass create()
{
return new AnotherBaseClass();
}
private static class SomeBaseClass extends SuperClass
{
void print()
{
System.out.println("Hello World");
}
}
private static class AnotherBaseClass extends SuperClass
{
}
public static void main(String[] args)
{
SomeBaseClass actuallyAnotherClass = (SomeBaseClass)SuperClass.create();
actuallyAnotherClass.print();
}
}
Run Code Online (Sandbox Code Playgroud)
我在Windows机器上使用了jdk1.6.0_25/bin/javac.Eclipse Helios也没有对此发出警告.
相反,它会导致运行时异常:
线程"main"中的异常java.lang.ClassCastException:SuperClass $ AnotherBaseClass无法强制转换为SuperClass $ SomeBaseClass
归档时间: |
|
查看次数: |
183 次 |
最近记录: |