다음을 통해 공유


ObjectOutputStream.ReplaceObject(Object) 메서드

정의

이 메서드를 사용하면 ObjectOutputStream의 신뢰할 수 있는 서브클래스가 serialization 중에 한 개체를 다른 개체로 대체할 수 있습니다.

[Android.Runtime.Register("replaceObject", "(Ljava/lang/Object;)Ljava/lang/Object;", "GetReplaceObject_Ljava_lang_Object_Handler")]
protected virtual Java.Lang.Object? ReplaceObject (Java.Lang.Object? obj);
[<Android.Runtime.Register("replaceObject", "(Ljava/lang/Object;)Ljava/lang/Object;", "GetReplaceObject_Ljava_lang_Object_Handler")>]
abstract member ReplaceObject : Java.Lang.Object -> Java.Lang.Object
override this.ReplaceObject : Java.Lang.Object -> Java.Lang.Object

매개 변수

obj
Object

바꿀 개체입니다.

반환

지정된 개체를 대체한 대체 개체입니다.

특성

예외

대체 개체를 만드는 동안 I/O 오류가 발생하는 경우

설명

이 메서드를 사용하면 ObjectOutputStream의 신뢰할 수 있는 서브클래스가 serialization 중에 한 개체를 다른 개체로 대체할 수 있습니다. enableReplaceObject가 호출될 때까지 개체 바꾸기를 사용할 수 없습니다. enableReplaceObject 메서드는 교체를 요청하는 스트림을 신뢰할 수 있는지 확인합니다. serialization 스트림에 기록된 각 개체의 첫 번째 항목이 replaceObject에 전달됩니다. 개체에 대한 후속 참조는 replaceObject에 대한 원래 호출에서 반환된 개체로 바뀝니다. 개체의 프라이빗 상태가 의도치 않게 노출되지 않도록 하기 위해 신뢰할 수 있는 스트림만 replaceObject를 사용할 수 있습니다.

ObjectOutputStream.writeObject 메서드는 직렬화할 수 없는 개체가 직렬화할 수 없는 개체로 대체되는 경우를 허용하기 위해 Serializable 형식이 아닌 Object 형식의 매개 변수를 사용합니다.

하위 클래스가 개체를 대체하는 경우 역직렬화 중에 보완적 대체를 수행해야 하거나 대체된 개체가 참조가 저장되는 모든 필드와 호환되도록 해야 합니다. 형식이 필드 또는 배열 요소 형식의 하위 클래스가 아닌 개체는 예외를 발생시켜 serialization을 중단하고 개체는 저장되지 않습니다.

이 메서드는 각 개체가 처음 발견될 때 한 번만 호출됩니다. 개체에 대한 모든 후속 참조는 새 개체로 리디렉션됩니다. 이 메서드는 대체될 개체 또는 원래 개체를 반환해야 합니다.

Null을 대체할 개체로 반환할 수 있지만 Null 대신 개체가 필요할 수 있으므로 원래 개체에 대한 참조가 포함된 클래스에서 NullReferenceException이 발생할 수 있습니다.

에 대한 java.io.ObjectOutputStream.replaceObject(java.lang.Object)Java 설명서

이 페이지의 일부는 Android 오픈 소스 프로젝트에서 만들고 공유하고 Creative Commons 2.5 특성 라이선스에 설명된 용어에 따라 사용되는 작업을 기반으로 하는 수정 사항입니다.

적용 대상

추가 정보