Java ObjectStreamField类

Serializable类中一个可序列化字段的描述。ObjectStreamFields的数组用于声明类的可序列化字段。

java.io.ObjectStreamClass.getField(String name)方法通过名称获取该类的字段。

构造函数

ConstructorDescription
ObjectStreamField(String name, Class<?> type)它创建一个具有指定类型的可序列化字段。
ObjectStreamField(String name, Class<?> type, boolean unshared)它创建一个 ObjectStreamField,表示具有给定名称和类型的可序列化字段。

方法

Modifier and TypeMethodDescription
intcompareTo(Object obj)它将此字段与另一个 ObjectStreamField 进行比较。
StringgetName()它获取该字段的名称。
intGetOffset()实例数据中字段的偏移量。
Class<?>getType()它获取字段的类型。
chargetTypeCode()它返回字段类型的字符编码。
StringgetTypeString()它返回JVM类型签名。
booleanisPrimitive()如果此字段具有原始类型,则返回 true。
booleanisUnshared()它返回布尔值,指示此 ObjectStreamField 实例表示的可序列化字段是否未共享。
protected voidsetOffset(int offset)实例数据中的偏移量。
StringtoString()它返回一个描述该字段的字符串。

public char getTypeCode()

返回字段类型的字符编码。编码规则如下:

Bbyte
Cchar
Ddouble
Ffloat
Iint
Jlong
Lclass or interface
Sshort
Zboolean
[array

返回:

可序列化字段的类型代码

示例:

import java.io.ObjectStreamClass;  
import java.util.Calendar;  
  
public class ObjectStreamClassExample {  
     public static void main(String[] args) {  
             
          // 为 Integers 创建一个新的对象流类   
          ObjectStreamClass osc = ObjectStreamClass.lookup(String.class);  
  
          // 从 ObjectStreamClass 获取整数值字段
          System.out.println("" + osc.getField("value"));  
  
          // 为 Calendar 创建一个新的对象流类  
          ObjectStreamClass osc2 = ObjectStreamClass.lookup(Calendar.class);  
  
          // 获取 osc2 的类实例
          System.out.println("" + osc2.getField("isTimeSet"));  
  
       }  
}  

输出:

I value
Z isTimeSet

标签: java, Java面试题, Java下载, java教程, java技术, Java学习, Java学习教程, Java语言, Java开发, Java入门教程, Java进阶教程, Java高级教程, Java笔试题, Java编程思想