除非當前對象沒有實現java.lang.Cloneable。
妳的程序直接運行沒有錯誤,無論在JDK1.3\1.4\1.5\1.6下都是正確的。
看了java的規範,理論上任何JDK都應該實現Object.clone()的。
那麽反過來考慮,如果要產生妳那個NullPointerException,必須使clone()返回null,那麽只有兩種可能: Object.clone()返回null或者拋出異常。
進而推論為Account對象沒有實現 java.lang.Cloneable!
因此,我猜測在妳程序的同壹個目錄下,還有個Cloneable.java,定義了壹個自定義的Cloneable,或者妳給的這段程序少了下面壹段:
interface Cloneable {
public Object clone();
}
我試了壹下,如果有個自定義的Cloneable,那麽編譯器就不會認為Account類實現了java.lang.Cloneable,因此Object.clone()就會拋出異常了。