
- Java.io - Home
- Java.io - BufferedInputStream
- Java.io - BufferedOutputStream
- Java.io - BufferedReader
- Java.io - BufferedWriter
- Java.io - ByteArrayInputStream
- Java.io - ByteArrayOutputStream
- Java.io - CharArrayReader
- Java.io - CharArrayWriter
- Java.io - Console
- Java.io - DataInputStream
- Java.io - DataOutputStream
- Java.io - File
- Java.io - FileDescriptor
- Java.io - FileInputStream
- Java.io - FileOutputStream
- Java.io - FilePermission
- Java.io - FileReader
- Java.io - FileWriter
- Java.io - FilterInputStream
- Java.io - FilterOutputStream
- Java.io - FilterReader
- Java.io - FilterWriter
- Java.io - InputStream
- Java.io - InputStreamReader
- Java.io - LineNumberInputStream
- Java.io - LineNumberReader
- Java.io - ObjectInputStream
- Java.io - ObjectInputStream.GetField
- Java.io - ObjectOutputStream
- io - ObjectOutputStream.PutField
- Java.io - ObjectStreamClass
- Java.io - ObjectStreamField
- Java.io - OutputStream
- Java.io - OutputStreamWriter
- Java.io - PipedInputStream
- Java.io - PipedOutputStream
- Java.io - PipedReader
- Java.io - PipedWriter
- Java.io - PrintStream
- Java.io - PrintWriter
- Java.io - PushbackInputStream
- Java.io - PushbackReader
- Java.io - RandomAccessFile
- Java.io - Reader
- Java.io - SequenceInputStream
- Java.io - SerializablePermission
- Java.io - StreamTokenizer
- Java.io - StringBufferInputStream
- Java.io - StringReader
- Java.io - StringWriter
- Java.io - Writer
- Java.io package Useful Resources
- Java.io - Discussion
Java - ObjectOutputStream.PutField Class
Description
The Java ObjectOutputStream.PutField class provide programmatic access to the persistent fields to be written to ObjectOutput.
Class declaration
Following is the declaration for Java.io.ObjectOutputStream.PutField class −
public abstract static class ObjectOutputStream.PutField extends Object
Class constructors
Sr.No. | Constructor & Description |
---|---|
1 |
ObjectOutputStream.PutField() Single Constructor |
Class methods
Sr.No. | Method & Description |
---|---|
1 |
abstract void put(String name, boolean val)
This method puts the value of the named boolean field into the persistent field. |
2 |
abstract void put(String name, byte val)
This method puts the value of the named byte field into the persistent field. |
3 |
abstract void put(String name, char val)
This method puts the value of the named char field into the persistent field. |
4 |
abstract void put(String name, double val)
This method puts the value of the named double field into the persistent field. |
5 |
abstract void put(String name, float val)
This method puts the value of the named float field into the persistent field. |
6 |
abstract void put(String name, int val)
This method puts the value of the named int field into the persistent field. |
7 |
abstract void put(String name, long val)
This method puts the value of the named long field into the persistent field. |
8 |
abstract void put(String name, Object val)
This method puts the value of the named Object field into the persistent field. |
9 |
abstract void put(String name, short val)
This method puts the value of the named short field into the persistent field. |
Methods inherited
This class inherits methods from the following classes −
- Java.io.Object
Example - Serialize a User object with a custom boolean field
The following example shows the usage of ObjectOutputStream.PutField put(String name, boolean val) method. We're serializing only the isActive field explicitly, along with the name.
ObjectOutputStreamDemo.java
package com.tutorialspoint; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; public class ObjectOutputStreamDemo { public static void main(String[] args) throws IOException, ClassNotFoundException { try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("user_bool1.ser"))) { User user = new User("Alice", true); oos.writeObject(user); ObjectInputStream ois = new ObjectInputStream(new FileInputStream("user_bool1.ser")); User u = (User)ois.readObject(); System.out.println(" User:: name= " + u.name + " isActive= " + u.isActive); } } static class User implements Serializable { private static final long serialVersionUID = 1L; String name; boolean isActive; public User(String name, boolean isActive) { this.name = name; this.isActive = isActive; } private void writeObject(ObjectOutputStream oos) throws IOException { ObjectOutputStream.PutField fields = oos.putFields(); fields.put("name", name); fields.put("isActive", isActive); // write boolean field manually oos.writeFields(); } private void readObject(ObjectInputStream ois) throws IOException, ClassNotFoundException { ObjectInputStream.GetField fields = ois.readFields(); name = (String) fields.get("name", "Unknown"); isActive = fields.get("isActive", false); } } }
Output
Let us compile and run the above program, this will produce the following result−
User:: name= Alice isActive= true
Explanation
The put() call explicitly writes the isActive boolean field.
On deserialization, the value is restored properly.
Example - Serialize a Student object with a grade (char)
The following example shows the usage of ObjectOutputStream.PutField put(String name, char val) method. We're writing a student's grade using put() method.
ObjectOutputStreamDemo.java
package com.tutorialspoint; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; public class ObjectOutputStreamDemo { public static void main(String[] args) throws IOException, ClassNotFoundException { try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("student1.ser"))) { Student s = new Student("Alice", 'A'); oos.writeObject(s); ObjectInputStream ois = new ObjectInputStream( new FileInputStream("student1.ser")); Student s1 = (Student)ois.readObject(); System.out.println("Student:: name = '" + s1.name + "' , grade = " + s1.grade); } } static class Student implements Serializable { private static final long serialVersionUID = 1L; String name; char grade; public Student(String name, char grade) { this.name = name; this.grade = grade; } private void writeObject(ObjectOutputStream oos) throws IOException { ObjectOutputStream.PutField fields = oos.putFields(); fields.put("name", name); fields.put("grade", grade); // putting a char field oos.writeFields(); } private void readObject(ObjectInputStream ois) throws IOException, ClassNotFoundException { ObjectInputStream.GetField fields = ois.readFields(); name = (String) fields.get("name", "Unknown"); grade = fields.get("grade", 'F'); } } }
Output
Let us compile and run the above program, this will produce the following result−
Student:: name = 'Alice' , grade = A
Explanation
The grade field is written manually as a char using put().
Example - Serialize a User with a manually set String email field
The following example shows the usage of ObjectOutputStream.PutField put(String name, Object val) method. We're manually writing a String object field using put() method.
ObjectOutputStreamDemo.java
package com.tutorialspoint; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; public class ObjectOutputStreamDemo { public static void main(String[] args) throws IOException { try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("user_obj1.ser"))) { User user = new User("alice@example.com"); oos.writeObject(user); } // Deserialize try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream("user_obj1.ser"))) { User user = (User) ois.readObject(); System.out.println("Deserialized email: " + user.email); } catch (ClassNotFoundException e) { e.printStackTrace(); } } static class User implements Serializable { private static final long serialVersionUID = 1L; String email; public User(String email) { this.email = email; } private void writeObject(ObjectOutputStream oos) throws IOException { ObjectOutputStream.PutField fields = oos.putFields(); fields.put("email", email); // write object field (String) oos.writeFields(); } private void readObject(ObjectInputStream ois) throws IOException, ClassNotFoundException { ObjectInputStream.GetField fields = ois.readFields(); email = (String) fields.get("email", "unknown@example.com"); } } }
Output
Let us compile and run the above program, this will produce the following result −
Deserialized email: alice@example.com
Explanation
A String object (email) is written using put("email", email).
It's a basic use of put() with an object-type field.