readResolve는 deserialize 된 객체의 생성/반환을 처리하는 후크입니다. Singleton 클래스가 여러 개의 비 직렬화 후에도 하나의 객체 만 갖도록 보장하면서 사용할 수 있습니다. 그러나이 메소드는 인스턴스 메소드이며 객체가 직렬화 해제되는 클래스에 정의됩니다. 그렇다면이 메소드가 어떻게 처음부터 호출됩니다. 다른 기능이 관련되어 있습니까?`readResolve`가 호출 객체를 반환하면 어떻게 인스턴스 메소드가됩니까?
1
A
답변
0
개체 비 직렬화가 역 직렬화 된 다음 에 의해 실제로 반환되는 개체를 결정하기 위해 해당 readResolve()
메서드가 호출됩니다. 이 클래스는 같은 클래스의 싱글 톤 인스턴스를 대체하는 것처럼 사용할 수도 있고 완전히 다른 클래스의 인스턴스를 반환하는 데 사용할 수도 있습니다. 예를 들어 해당 writeObjext()
메서드가 직렬화 할 프록시 개체를 대체 한 경우입니다.
1
오해하셨습니까? (De) 직렬화는 바이트로부터 객체를 생성 한 다음,이 객체에 대체 할 것인지를 묻습니다.
private Object readResolve() {
return this;
}
은이 방법을 구현하는 완벽한 방법입니다. 그것은 "나를 대체하지 말라"는 의미이기 때문에 단지 무의미합니다. 이 방법이 없을 때도 똑같은 일이 일어난다.
당신이
class Elvis implements Serializable {
{ System.out.println("Initializer of " + this); }
private Elvis() { System.out.println("Constructor of " + this); }
static final Elvis THE_ELVIS = new Elvis();
private Object readResolve() {
System.out.println("readResolve of " + this);
new Exception("This is how we get called:").printStackTrace();
return THE_ELVIS; // we're not the real one and don't want to be
// the result of deserialization. Replace with
// proper instance.
}
}
다음 역 직렬화 할 때가 볼 수 있도록 할 수 있습니다
관련 문제
- 1. 안드로이드 : SQLite : SQLiteDatabase.isDatabaseIntegrityOK()가 false를 반환하면 isDatabaseIntegrityOK()가 false를 반환하면
- 2. 로컬 객체를 반환하면 가비지가 발생하고 동일한 객체를 반환하면 임시로 작동합니다.
- 3. 새 매개 변수를 사용하여 생성자를 반환하면 인스턴스 객체를 덮어 씁니까?
- 4. 인스턴스 생성자의 호출 객체를 가져 옵니까?
- 5. ParameterizedThreadStart 질문 : 메소드가 객체를 반환하면 어떻게됩니까?
- 6. 클래스/인터페이스 readObjectNoData(), writeReplace(), readResolve()가 선언 되었습니까?
- 7. 수퍼 클래스가 다른 객체를 반환하면 어떻게됩니까?
- 8. Json 객체를 반환하면 문자열 만 반환됩니다.
- 9. 객체를 반환하면 두 번째 반복에서 undefined가 반환됩니다.
- 10. (stdout == "E")가 항상 false를 반환하면
- 11. AuthorizationExecuteWithPrivileges()가 -1을 반환하면 무엇을 의미합니까?
- 12. sqlite3_prepare_v2()가 오류 코드를 반환하면 어떻게해야합니까?
- 13. 자바 : 인스턴스 인스턴스 메서드 호출
- 14. 메서드의 Java 인스턴스 호출 인스턴스?
- 15. 인스턴스 함수를 어떻게 호출 할 수 있습니까?
- 16. readResolve()로 정적 필드 직렬화
- 17. 필터가 false를 반환하면 뷰 호출 렌더링은 어떻게됩니까?
- 18. 인터페이스의 인스턴스 메소드 직접 호출
- 19. Theos 인스턴스 메서드 호출
- 20. Jetty EndPoint.flush (ByteBuffer b)가 false를 반환하면 어떻게해야합니까?
- 21. Python에서 클래스의 인스턴스 호출
- 22. 개체의 인스턴스 호출
- 23. 인스턴스 "부모님"인스턴스에서 호출
- 24. init에서 인스턴스 메소드 호출
- 25. 가 왜 객체를
- 26. ThreadPool.QueueUserWorkItem()이 FALSE를 반환하면 어떻게 대응해야합니까?
- 27. 정적 변수를 반환하면 어떻게 달라 집니까?
- 28. CString을 반환하면 소멸자가 호출됩니까?
- 29. writeReplace + readResolve 대신 Externalizable을 사용하는 경우?
- 30. 가 어떻게 기능 테스트를 호출 몸 부하에 DOM 요소