2011-05-10 131 views
1

我有一個方法,試圖克隆一個類的實例(B)我已經writen.This方法在類A中調用,所以這種方法是不是在同一班,我正在嘗試類克隆(B)。我正試圖克隆impliments colneable。當我嘗試編譯我的代碼時,我收到一條錯誤消息,它讀取「clone()已經保護了Java.lang.Object中的訪問權限,爲什麼會這樣呢?java克隆錯誤

回答

0

您只能訪問不同類型的受保護成員包如果在編譯時類型你引用它通過或者是您自己的類或子類的表達。

檢查這個link

+0

所以問題是A不是B的sublcass? – David 2011-05-10 02:56:14

+0

@David ...和A和B在不同的包中。 – 2011-05-10 02:59:34

1

如果您希望A類內的某些代碼克隆類B的實例,則可以將A和B放在同一個包中,或者通過將其公開(而不是離開)來擴大對B.clone()的訪問它的保護範圍。)

此外,我會引用你的書由Josh Bloch Effective Java。我找到了第三章的PDF here