我讀A simple Box Class,我無意中發現這個代碼:的java:預計RuntimeError但不會發生
public class Box {
private Object object;
public void set(Object object) { this.object = object; }
public Object get() { return object; }
}
筆者在A simple Box Class提到,
有沒有辦法來驗證在編譯時,如何使用這個類。代碼的一部分可能會在整個框中放置一個Integer,並期望將Integer從中取出,而另一部分代碼可能會錯誤地傳遞一個String,導致運行時錯誤。
但是當我測試並運行此代碼:
public class checkBox {
public static void main(String[] args){
Box box = new Box();
box.set(new Integer(3));
System.out.println(box.get());
box.set("test");
System.out.println(box.get());
}
它運行正常,沒有錯誤,這是我所期待的,因爲在Java中存在一個分配不同類型的變量沒有問題對象引用(也是多態性在這裏我猜)。
那麼作者對那個詞組意味着什麼?我錯過了什麼?
如果您編寫'String s =(String)box.get()',但您之前設置了一個Integer,則風險是 – AxelH
儘管代碼中還存在一個調用'println(Object)'的代碼, '調用println(字符串)'。它這樣做是因爲'get()'被聲明爲返回'Object'。這是可行的,因爲'println(Object)'也可以正確處理字符串。 –