我有一个可序列化的类,比如“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
存储为ArrayList
和String
之类的类变量。我希望将它传递给一个方法并且仅在需要的地方使用它,我将减少创建WriteMe
时使用的内存量,并且还减少WriteMe
对象的文件大小,如果我将其传递给ObjectOutputStream
或类似对象(以便可以将其写入文件)。
“Megaclass m
”只是存储指向该对象实例化的指针吗?如果是这样,我会想象如果我把它变成类变量并不重要,因为地址只是几个字节左右。使用传递给方法的对象是否有任何优势,如上所示?另一种方法是将它传递给构造函数并指定为类变量。两种方式都有利吗?
答案 0 :(得分:0)
正如Mark W.所说,最好的办法是分开使用&#34; MegaClass&#34;和#34; WriteMe&#34;,以便WriteMe所需要的只是数据。
public void update(ArrayList<String> newList)
{
list = newList;
}
以这种方式,一个引用这两个类的超类可以从MegaClass查询&#34;什么是正确的数据?&#34;,并将此信息传递给WriteMe!这样做的一个好处就是不需要瞬态数据,也不需要任何参考MegaClass!