我看到這個代碼:接口的類的對象,鑄造,異常
interface I{}
class A implements I{}
class B extends A{}
class C extends B{}
class ABC
{
public static void main(String args[])
{
A a=new A();
B b=new B();
a=(B)(I)b; //Line 1
b=(B)(I)a; //Line 2
a=(I)b; //Line 3
I i=(C)a; //Line 4
}
}
試圖找出
- 到即有一個安全的鑄造哪種方式,而不編譯或運行時錯誤
- 在什麼情況下鑄件會顯示編譯時錯誤
- 在什麼情況下鑄件會顯示運行時異常
任何人都可以解釋我這3個概念嗎?
三年線,它不是*投*引起編譯時失敗 - 它試圖爲'A'類型的變量賦予一個編譯時類型'I'的值... – 2014-11-06 19:20:50
在第二行中,你有一個不是'B'的對象,並且你試圖將其分配給「B」類型的變量。爲什麼在運行時會這樣? – 2014-11-06 19:22:30
因爲我們把它鑄造成B @ david – Gpar 2014-11-06 19:26:01