ObjectInputStream類enableResolveObject()方法 (ObjectInputStream Class enableResolveObject() method)
enableResolveObject() method is available in java.io package.
enableResolveObject()方法在java.io包中可用。
enableResolveObject() method is used to enable the ObjectInputStream to permit objects read from the stream to be replaced. When a boolean variable is set to true and SecurityManager installed and it first invoked the checkPermission() method with SerializablePermission(“enableSubstitution”) of SecurityManager to ensure that it is ready to activate this ObjectInputStream to permit objects read from the stream ObjectInputStream to be replaced.
enableResolveObject()方法用于啟用ObjectInputStream以允許替換從流中讀取的對象。 將布爾變量設置為true并安裝SecurityManager時,它首先使用SecurityManager的SerializablePermission(“ enableSubstitution”)調用checkPermission()方法,以確保已準備好激活此ObjectInputStream以允許從流ObjectInputStream讀取的對象被替換。
enableResolveObject() method is a non-static method, it is accessible with the class object only and if we try to access the method with the class name then we will get an error.
enableResolveObject()方法是一個非靜態方法,只能通過類對象訪問,如果嘗試使用類名訪問該方法,則會收到錯誤消息。
enableResolveObject() method may throw an exception at the time of checking object status to replace.
enableResolveObject()方法在檢查要替換的對象狀態時可能會引發異常。
SecurityException: This exception may throw when its checkPermission() method does not allow to enable the stream to permit objects read from the stream to be replaced when SecurityManager exists.
SecurityException :當SecurityManager存在時,如果其checkPermission()方法不允許啟用流以允許從流讀取的對象被替換,則可能引發此異常。
Syntax:
句法:
public boolean enableResolveObject(boolean status);
Parameter(s):
參數:
boolean status – if it sets to true that means to enable use of resolveObject() for each object being deserialized.
布爾狀態 –如果將其設置為true,則意味著對每個反序列化的對象啟用resolveObject()的使用。
Return value:
返回值:
The return type of the method is boolean, it gets the old setting before this method was called.
該方法的返回類型為boolean ,它在調用此方法之前獲得了舊設置。
Example:
例:
// Java program to demonstrate the example
// of void defaultReadObject() method
// of ObjectInputStream
import java.io.*;
public class DefaultReadObject {
public static void main(String[] args) throws Exception {
// Instantiates ObjectOutputStream , ObjectInputStream
// FileInputStream and FileOutputStream
FileOutputStream file_out_stm = new FileOutputStream("D:\\includehelp.txt");
ObjectOutputStream obj_out_stm = new ObjectOutputStream(file_out_stm);
FileInputStream file_in_stm = new FileInputStream("D:\\includehelp.txt");
ObjectInputStream obj_in_stm = new ObjectInputStream(file_in_stm);
// By using writeObject() method is to
// write object to Serialized class
obj_out_stm.writeObject(new DefaultObjectClass());
obj_out_stm.flush();
// By using readObject() method is to
// read an object from the Serialized class
DefaultObjectClass def_obj = (DefaultObjectClass) obj_in_stm.readObject();
// Using both readObject and defaultReadObject();
System.out.println("obj_in_stm.defaultReadObject(): " + def_obj.str);
System.out.println("obj_in_stm.defaultReadObject(): " + def_obj.in);
}
static class DefaultObjectClass implements Serializable {
String str = "Java Programming";
Integer in = new Integer(10);
private void readObject(ObjectInputStream obj_stm) throws IOException, ClassNotFoundException {
// By using defaultReadObject() method is
// to read non-static fields of the present
// class from the ObjectInputStream
obj_stm.defaultReadObject();
}
}
}
Output
輸出量
enableResolveObject invoked
resoveObject: Java
翻譯自: https://www.includehelp.com/java/objectinputstream-enableresolveobject-method-with-example.aspx