2016-09-07 54 views
-1

序列化的擴展類我有兩個類A和B.Class B爲實現Serializable接口和A類擴展B.So如何避免序列化A級如何避免在Java

+4

不要編寫任何代碼來序列化A類 – Orin

回答

1

用的組合物,而不是使用繼承。也許還需要創建一個界面,以便您想要BA對象執行操作。例如:

interface Foo { 
    void foo(); 
} 

public class B implements java.io.Serializable, Foo { 
    // some instance vars and methods 
    public void foo() { 
     // b implementation. 
    } 
} 

public class A implements Foo { 
    private final B b; 
    public A(final B b) { 
     this.b = b; 
    } 
    public void foo() { 
     b.foo(); 
    } 
} 
+0

感謝您的迴應。我在面試中被問到這個問題,所以在你的解決方案中,我們不能擴展B,但是實現了功能的正確性? – Sam

+0

確定這是可能的。雖然默認情況下它也會使'A'可序列化,但我們仍然可以阻止'A'被序列化。當然,最好不要陷入這種情況。我明天會發布解決方案,如果到那時你還沒有設法找到它的話。 – Kayaman