我在網上發現了這個代碼,其中人正在實例化一個在類外部具有私有構造函數的類。我無法理解這是如何工作的,因爲我之前讀過的內容是,在類中使用私有構造函數,因此無法在類之外實例化。在類外部實例化私有構造的類
public final class A extends B {
private A(Something, Something)
{
//Something
}
public void someMethods()
{
//Something
}
}
public final class B {
private A a;
public void someMethod()
{
final ObjectInputStream objectInputStream = new ObjectInputStream(
new ByteArrayInputStream(buffer.toByteArray()));
a = (A) objectInputStream.readObject();
objectInputStream.close();
a.someMethods();
}
}
我只是想了解這裏究竟發生了什麼?我試着在ObjectInputStream
上閱讀,但沒有得到任何東西。
那麼這是否意味着這個特定對象的行爲就像一個靜態對象?意思是說,它只有一個實例,因爲它已經從堆中映射出來了?不知道我是否清楚。 – noMAD 2012-08-13 17:21:46
好吧,總是隻有一個對象的實例,因爲一個對象_is_是一個類的實例。如果你的意思是,如果這是一個單例(只有一個類的一個實例),那麼答案是否定的。您可以序列化和反序列化同一個類的多個對象。 – Thomas 2012-08-15 08:01:43