java toString方法是否能够读取内容中的任何类型对象?

时间:2015-08-08 19:22:12

标签: java

序列化代码

public class JavaSerialization
{


public static void main(String args[])
{
    serial s = new serial("This is serialization test.");

    try
    {
        FileOutputStream fos = new FileOutputStream("mytext.txt");

        ObjectOutputStream oos = new ObjectOutputStream(fos);

        oos.writeObject(s);
    }

    catch(Exception e)
    {
        e.printStackTrace();
    }
}
}

class serial implements Serializable
{
private String s;

private static final long serialVersionUID = 4616307934661308622L;

public serial(String s)
{
    this.s = s;
    System.out.println("Output of Serilization : "+s);
}


@Override
public String toString()
{
    return s;
}

}

反序列化代码

public class JavaDeserialization 
{

public static void main(String args[])
{

    try
    {
        FileInputStream fis = new FileInputStream("mytext.txt");

        ObjectInputStream ois = new ObjectInputStream(fis);

        serial s = (serial)ois.readObject();

        System.out.println("deserialization  :"+s.toString());
    }

    catch(Exception e)
    {
        e.printStackTrace();
    }
}
}

1 个答案:

答案 0 :(得分:0)

toString()是一个像任何其他方法一样的方法,它可以访问任何其他方法可以访问的任何东西。如果您可以获得对要访问的对象的引用,则很可能您可以访问所需的任何内容。

如果你问你的toString()是否应该起作用,最好的方法是尝试它但你可以这样做。

注意:如果您保持未刷新和未关闭的缓冲输出流,您将丢失部分结束,可能是所有数据。

当您完成或使用try-with-resource构造时,我建议您close()一个资源。

public static void main(String[] args) throws IOException {
    Serial s = new Serial("This is serialization test.");

    try(ObjectOutputStream oos= new ObjectOutputStream(new FileOutputStream("mytext.txt")){
        oos.writeObject(s);
    }
}