在java中,在处理来自另一个可实例化类的序列化和引用时,如何引用用户定义的类?

时间:2014-08-25 14:30:01

标签: java serialization reference

我有一个可序列化的类,比如“WriteMe”类。此类需要另一个类来更新其成员之一。所述类相对较大,因为WriteMe主要是一个包装类。我们将调用大班“MegaClass”。因此我们有类似的东西:

public class WriteMe implements Serializable
{
    private ArrayList<String> list;
    private String name;

    public WriteMe(String s)
    {
        name = s;
    }

    public void update(MegaClass m)
    {
        list = m.getList(name);
    }
}

这样做的希望之处在于我不希望将MegaClass存储为ArrayListString之类的类变量。我希望将它传递给一个方法并且需要的地方使用它,我将减少创建WriteMe时使用的内存量,并且减少WriteMe对象的文件大小,如果我将其传递给ObjectOutputStream或类似对象(以便可以将其写入文件)。

Megaclass m”只是存储指向该对象实例化的指针吗?如果是这样,我会想象如果我把它变成类变量并不重要,因为地址只是几个字节左右。使用传递给方法的对象是否有任何优势,如上所示?另一种方法是将它传递给构造函数并指定为类变量。两种方式都有利吗?

1 个答案:

答案 0 :(得分:0)

正如Mark W.所说,最好的办法是分开使用&#34; MegaClass&#34;和#34; WriteMe&#34;,以便WriteMe所需要的只是数据。

public void update(ArrayList<String> newList)
{
    list = newList;
}

以这种方式,一个引用这两个类的超类可以从MegaClass查询&#34;什么是正确的数据?&#34;,并将此信息传递给WriteMe!这样做的一个好处就是不需要瞬态数据,也不需要任何参考MegaClass!