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 数组用于声明类的可序列化字段。