Java - ObjectStreamField getName() method



Description

The Java ObjectStreamField getName() method gets the name of this field.

  • getName() returns the name of the field (as a String) represented by the ObjectStreamField object.

  • It's very useful when you are −

    • Inspecting serialized fields dynamically

    • Building custom serializers

    • Debugging serialization layouts

Declaration

Following is the declaration for java.io.ObjectStreamField.getName() method.

public String getName()

Parameters

NA

Return Value

This method returns a String representing the name of the serializable field.

Exception

NA

Example - Usage of ObjectStreamField getName() method

The following example shows the usage of ObjectStreamField getName() method.

ObjectStreamFieldDemo.java

package com.tutorialspoint;

import java.io.ObjectStreamClass;
import java.io.ObjectStreamField;
import java.util.Calendar;

public class ObjectStreamFieldDemo {
   public static void main(String[] args) {
   
      // create a new object stream class for Integers
      ObjectStreamClass osc = ObjectStreamClass.lookup(Integer.class);

      // get the field value from Integer class
      ObjectStreamField field = osc.getField("value");

      // get the name of the field
      System.out.println(field.getName());

      // create a new object stream class for calendar
      ObjectStreamClass osc2 = ObjectStreamClass.lookup(Calendar.class);

      // get the field value from Calendar class
      ObjectStreamField field2 = osc2.getField("lenient");

      // get the name of the field2
      System.out.println(field2.getName());
   }
}

Output

Let us compile and run the above program, this will produce the following result −

value
lenient

Example - Print all field names of a class

The following example shows the usage of ObjectStreamField getName() method. We're displaying the names of all serializable fields of a Person class.

ObjectStreamFieldDemo.java

package com.tutorialspoint;

import java.io.ObjectStreamClass;
import java.io.ObjectStreamField;
import java.io.Serializable;

public class ObjectStreamFieldDemo {
   public static void main(String[] args) {
      ObjectStreamClass osc = ObjectStreamClass.lookup(Person.class);
      ObjectStreamField[] fields = osc.getFields();

      System.out.println("Fields in Person:");
      for (ObjectStreamField field : fields) {
         System.out.println(" - " + field.getName());
      }
   }

   static class Person implements Serializable {
      private static final long serialVersionUID = 1L;
      String firstName;
      String lastName;
      int age;
      transient String password; // transient, not serialized
   }
}

Output

Let us compile and run the above program, this will produce the following result−

Fields in Person:
 - firstName
 - lastName
 - age

Explanation

  • getName() gives the name of each field included in the serialization stream.

  • password is not printed because it's transient (skipped in serialization).

Example - Check if a specific field exists by name

The following example shows the usage of ObjectStreamField getName() method. We're searching for a specific field ("age") among serialized fields.

ObjectStreamFieldDemo.java

package com.tutorialspoint;

import java.io.ObjectStreamClass;
import java.io.ObjectStreamField;
import java.io.Serializable;

public class ObjectStreamFieldDemo {
   public static void main(String[] args) {
      ObjectStreamClass osc = ObjectStreamClass.lookup(Employee.class);
      ObjectStreamField[] fields = osc.getFields();

      boolean found = false;
      for (ObjectStreamField field : fields) {
         if ("age".equals(field.getName())) {
            found = true;
            break;
         }
      }

      if (found) {
         System.out.println("Field 'age' exists in Employee class.");
      } else {
         System.out.println("Field 'age' not found in Employee class.");
      }
   }

   static class Employee implements Serializable {
      private static final long serialVersionUID = 1L;
      String name;
      int id;
      int age;
   }
}

Output

Let us compile and run the above program, this will produce the following result−

Field 'age' exists in Employee class.

Explanation

  • getName() is used to find a field by its name.

  • Simple but very powerful when you need to validate or dynamically act based on field existence.

java_io_objectstreamfield.htm
Advertisements