public class InterfaceCasting {
private static class A{}
public static void main(String[] args) {
A a = new A();
Serializable serializable = new Serializable(){};
a = (A)serializable;
}
}
Run Code Online (Sandbox Code Playgroud)
编译成功但运行时异常
Exception in thread "main" java.lang.ClassCastException: InterfaceCasting$1 cannot be cast to InterfaceCasting$A
Run Code Online (Sandbox Code Playgroud)
为什么汇编成功?编译器必须知道serialiazable不是A?
问题来自http://www.javacertifications.net/javacert/scjp1.6Mock.jsp
问题没有-20
以下代码的输出是什么?
public class Test extends Thread
{
static String sName = "good";
public static void main(String argv[])
{
Test t = new Test();
t.nameTest(sName);
System.out.println(sName);
}
public void nameTest(String sName)
{
sName = sName + " idea ";
start();
}
public void run()
{
for(int i=0;i < 4; i++)
{
sName = sName + " " + i;
}
}
}
Run Code Online (Sandbox Code Playgroud)
选项A)好B)好主意C)好主意好主意正确答案是:A
解释:在String的情况下,本地方法中的更改值不会在全局中更改(因为String对象是不可变的).