gpt4 book ai didi

Java:XMLEncoder writeObject 子对象

转载 作者:行者123 更新时间:2023-12-01 14:53:56 25 4
gpt4 key购买 nike

我正在做一些关于 Java 的作业,但我不擅长它,并且在尝试使用 XMLEncoder 将 App 对象存储到文件时遇到问题。

简而言之,我的应用程序有一个名为 animal 的抽象类。另一个扩展了前一个,称为 dogcat 。在我的主应用程序中,我有一个静态方法来创建新动物,该方法将新动物对象添加到类型为 animal 的静态 ArrayList 中。 :public static ArrayList<animal> animalArray = new ArrayList<animal>();

创建动物kingdom.java:

private static void newAnimal(ArrayList<animal> animalArray) {
System.out.print(" Enter a name for the dog > ");
animalArray.add(new dog(keyboard.nextLine()));
System.out.println(" New dog with name " + animalArray.get(animalArray.size()-1).getName() + ".\n");

try {
FileOutputStream afos = new FileOutputStream("animals.xml");
XMLEncoder encoder = new XMLEncoder(afos);
encoder.writeObject(animalArray.get(animalArray.size()-1));
encoder.close();
} catch(IOException ioe){
System.out.print("[ERROR!]");
}
}

我的抽象动物类:animal.java:

public abstract class animal {

private static int alloc = 0;
protected int id;
private String name;

animal() {
alloc++;
id = alloc;
}

public void play() {
System.out.print(" The animal (" + this.id + ") " + this.name + " is now playing... ");
}

public void setName(String lname) {
this.name = lname;
}

public String getName() {
return this.name;
}

public static int countAnimals() {
return alloc;
}

}

现在,我的狗课:dog.java:

public class dog extends animal {

dog(String theName) {
this.setName(theName);
}

@Override
public void play() {
super.play();
System.out.println(" Dog Stuff!");
}

}

当我尝试运行代码时,我得到:

java.lang.InstantiationException: dog
Continuing ...
java.lang.Exception: XMLEncoder: discarding statement XMLEncoder.writeObject(dog);
Continuing ...

我错过了什么?谢谢;)

最佳答案

您应该按以下方式使用:

encoder.writeObject(animalArray.get(animalArray.size()-1).getName());

Dog 对象本身无法保存到 XMLEncoder 中。

谢谢。

关于Java:XMLEncoder writeObject 子对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14492644/

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