직렬화하려는 클래스가 있으며 Serializable을 구현하지만 포함 된 개체 중 하나는 Serializable을 구현하지 않습니다.
직렬화 할 수 있도록 직렬화 가능 인터페이스를 구현하도록 런타임에 클래스를 수정하는 방법이 있습니까? 타사 라이브러리이기 때문에 컴파일 타임에 변경할 수 없습니다.
아마도 일종의 바이트 코드 작성기 같은 것을 사용해야할까요?
편집 : 포함하는 클래스와 포함 된 클래스는 모두 타사 라이브러리에 있으므로 일시적으로 표시 할 수 없다고 생각합니다. 포함하는 클래스 는 직렬화 가능 으로 표시되지만 그렇지 않은 객체를 포함합니다.
클래스에 대한 사용자 지정 직렬화 메서드를 작성해도 괜찮지 만 어떻게해야할지 모르겠습니다. 리플렉션을 사용하여 개인 변수의 값을 가져와야합니까?
Serializable에 대한 javadoc을 읽으면 다음을 참조하십시오.
직렬화 및 역 직렬화 프로세스 중에 특수 처리가 필요한 클래스는 다음과 같은 정확한 서명을 사용하여 특수 메서드를 구현해야합니다.
private void writeObject(java.io.ObjectOutputStream out)
throws IOException
private void readObject(java.io.ObjectInputStream in)
throws IOException, ClassNotFoundException;
private void readObjectNoData()
throws ObjectStreamException;
비협조적인 필드를 수동으로 직렬화하는 데 사용할 수 있습니다. ASM 사용을 살펴볼 수 있지만 유지 관리가 가능한 솔루션이라고 믿기 어렵습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다