클래스 외부에 개인 생성자가있는 클래스를 인스턴스화하는 경우이 코드를 온라인으로 발견했습니다. 어떻게 작동하는지 이해할 수 없습니다. 이전에 읽은 것에서부터 클래스의 개인 생성자를 사용하여 클래스 외부에서 인스턴스화 할 수 없습니다.클래스 외부에서 인스턴스화 된 개인 구성의 클래스
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
글쎄, 객체가 클래스의 인스턴스이기 때문에 항상 객체의 인스턴스는 하나뿐입니다. 이것이 싱글 톤 (클래스의 한 인스턴스)과 같은 것이면, 대답은 아니오입니다. 동일한 클래스의 여러 객체를 직렬화 및 비 직렬화 할 수 있습니다. – Thomas