gpt4 book ai didi

java - 尝试从子级序列化父级成员变量,其中父级未实现可序列化

转载 作者:行者123 更新时间:2023-11-30 07:48:14 25 4
gpt4 key购买 nike

我知道如果父级没有实现 Serialized 接口(interface),则无法序列化父级的成员变量。

我创建了一个示例程序,并试图找到一种方法(无论它多么hacky)来序列化父类的成员变量,而不需要更改它来实现可序列化。

下面是代码:

class s
{
int i;
public int getI() {
return i;
}
public void setI(int i) {
this.i = i;
}
public int getJ() {
return j;
}
public void setJ(int j) {
this.j = j;
}
int j;
private int fun(){
return 1;
}
}

class m extends s implements Serializable
{
int k;
int l;
public int getK() {
return k;
}
public void setK(int k) {
this.k = k;
}
public int getL() {
return l;
}
public void setL(int l) {
this.l = l;
}

public int fun(){
return 2;
}
}

class n1{
public static void main(String...s)
{
m m1 = new m();
m1.setI(100);
m1.setJ(101);
m1.setK(401);
m1.setL(701);

try {
OutputStream os = new FileOutputStream(new File("d:/aaa.data"));
ObjectOutputStream oos = new ObjectOutputStream(os);
oos.writeObject(m1);
InputStream is = new FileInputStream(new File("d:/aaa.data"));
ObjectInputStream ois = new ObjectInputStream(is);
m m2 = (m)ois.readObject();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

我非常感谢您对此事的想法并肯定投赞成票:)谢谢

最佳答案

您可以通过向子类添加以下方法来解决此问题:

  1. 一个 writeObject() 方法,它还序列化不可序列化类的成员。
  2. 反序列化它们的 readObject() 方法。

这些方法所需的签名以及它们可以/必须执行的操作在 Object Serialization Specification 中定义。 .

关于java - 尝试从子级序列化父级成员变量,其中父级未实现可序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33645608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com