Java ObjectStreamField

原文:https://www.studytonight.com/java-file-io/java-objectstreamfield-class

在本教程中,我们将学习 Java 中的ObjectStreamField 类。此类是可序列化类中可序列化字段的描述。ObjectStreamFields 数组用于声明类的可序列化字段。

句法

public class ObjectStreamField extends Object implements Comparable<Object>

构造器

构造器 描述
ObjectStreamField(String name, Class<?> type) 此方法创建具有指定类型的可序列化字段。
ObjectStreamField(String name, Class<?> type, boolean unshared) 此方法创建一个 ObjectStreamField,表示具有给定名称和类型的可序列化字段。

方法

ObjectStreamField 类的方法如下:

| 方法 | 描述 | | int compareTo(Object obj) | 它将此字段与另一个 ObjectStreamField 进行比较。 | | String getName() | 它获取该字段的名称。 | | int GetOffset() | 实例数据中字段的偏移量。 | | Class<?> getType() | 它获取字段的类型。 | | char getTypeCode() | 它返回字段类型的字符编码。 | | String getTypeString() | 它返回 JVM 类型签名。 | | boolean isPrimitive() | 如果该字段具有基本类型,则返回 true。 | | boolean isUnshared() | 它返回一个布尔值,该值指示由该 ObjectStreamField 实例表示的可序列化字段是否是非共享的。 | | protected void setOffset(int offset) | 实例数据内的偏移量。 | | String toString() | 它返回一个描述该字段的字符串。 |

上表getTypeCode()方法返回字符,即字段类型的字符编码。编码如下:

| B | 字节 | | C | 茶 | | D | 两倍 | | F | 漂浮物 | | 我 | (同 Internationalorganizations)国际组织 | | J | 长的 | | L | 类或接口 | | S | 短的 | | Z | 布尔 | | [ | 排列 |

ObjectStreamField 示例

在下面的例子中,我们正在实现ObjectStreamField 类的getName()getField()方法。此方法返回一个表示可序列化字段名称的字符串。

package studytonight;
import java.io.ObjectStreamClass;
import java.io.ObjectStreamField;
import java.util.Calendar;
public class StudyTonight 
{
    public static void main(String args[])
    {
        ObjectStreamClass osc = ObjectStreamClass.lookup(Integer.class);

        ObjectStreamField field = osc.getField("value");

        System.out.println("" + field.getName());

        ObjectStreamClass osc2 = ObjectStreamClass.lookup(Calendar.class);

        ObjectStreamField field2 = osc2.getField("lenient");

        System.out.println("" + field2.getName());
    }
}

值 从宽

示例:

在这个例子中,我们为整数和日历创建了一个新的ObjectStream,然后获取两者的类实例并打印出来。

package studytonight;
import java.io.ObjectStreamClass;
import java.util.Calendar;
public class StudyTonight 
{
    public static void main(String args[])
    {
        ObjectStreamClass osc = ObjectStreamClass.lookup(String.class);  
        System.out.println("" + osc.getField("value"));  

        ObjectStreamClass osc2 = ObjectStreamClass.lookup(Calendar.class);  
        System.out.println("" + osc2.getField("isTimeSet"));  
    }
}

零 Z 是时间集

结论:

在本教程中,我们学习了 Java 中的ObjectStreamField 类。此类是可序列化类中可序列化字段的描述。ObjectStreamFields 数组用于声明类的可序列化字段。