Java ObjectStream

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

在本教程中,我们将学习 Java 中的ObjectStreamClass 。这个类也被称为类的序列化描述符。它包含类的名称和 serialVersionUID。

ObjectStreamClass 的方法

ObjectStreamClass 的不同方法如下:

方法 描述
Class<?> forClass() 它返回该版本映射到的本地虚拟机中的类。
ObjectStreamField getField(String name) 它通过名称获取这个类的字段。
ObjectStreamField[] getFields() 它返回此序列化类的字段数组。
String getName() 它返回由这个描述符描述的类名。
long getSerialVersionUID() 它返回这个类的 serialVersionUID。
Static ObjectStreamClass lookup(Class<?> cl) 它找到一个可以序列化的类的描述符。
Static ObjectStreamClass lookupAny(Class<?> cl) 它返回任何类的描述符,不管它是否实现 Serializable。
String toString() 它返回一个描述该ObjectStream类的字符串。

ObjectStream类及其方法示例

在下面的例子中,我们调用getFields()getName()getSerialVersionUID()toString() 方法来获取类的相应信息。这里我们借助lookup()方法为java.lang包的Number 类创建了一个ObjectStreamClass 方法的对象。

package studytonight;
import java.io.ObjectStreamClass;
public class StudyTonight 
{
    public static void main(String args[])
    {
        ObjectStreamClass stream = ObjectStreamClass.lookup(Number.class); 

        System.out.println("Class Fields: "+stream.getFields()); 

        System.out.println("Class Name: " + stream.getName()); 

        System.out.println("Class SerialVersionUID: "+stream.getSerialVersionUID()); 

        System.out.println("Class String: "+stream.toString()); 
    }
}

类字段:【ljava . io . objectstreamfield;@3ac42916 类名称:java.lang.Number 类序列版本号:-8742448824652078965 类字符串:java.lang.Number:静态最终长序列版本号=-874248824652078965 l;

检查类实例的示例

在这个例子中,我们使用lookup()lookupAny() 方法检查一个类的实例。这里lookup()方法找到一个可以序列化的类的描述符。另一方面, lookupAny()方法返回任何类的描述符,不管它是否实现 Serializable。

package studytonight;
import java.io.ObjectStreamClass;
import java.util.ArrayList;
public class StudyTonight 
{
    public static void main(String args[])
    {
        ObjectStreamClass objectStream1 = ObjectStreamClass.lookup(Number.class);
        System.out.println(objectStream1.forClass()); 
        ObjectStreamClass objectStream2 = ObjectStreamClass.lookupAny(ArrayList.class);         
        System.out.println(objectStream2.forClass()); 
    }
}

类 java.lang.Number 类 java.util.ArrayList

结论

在本教程中,我们学习了ObjectStreamClass。这个类也被称为类的序列化描述符。它包含类的名称和 serialVersionUID。它扩展了类对象并实现了可序列化。