有两个类 player 和 game。实现序列化和 fileio。序列化工作正常。无法获得对象数组的最大长度。我想要数组中存在的对象数。
class player {
private String username;
}
class game {
player array[] = new player[100];
int arraysize;
player player;
public void setArraySize(int arraySize) {
this.arraySize = arraySize;
}
public void readdata() { // reading from file starts
//ObjectInputStream input = null;
try {
ObjectInputStream input = new ObjectInputStream(new FileInputStream("myfile.txt"));
array = (NimPlayer[]) input.readObject();
} catch (Exception e) {
e.printStackTrace();
}
initializearraylength(array);
}// reading file ends
public void initializearraylength(NimPlayer[] temparray) {
int size = temparray.length;
setArraySize(size);
System.out.println(size); // output displays size 100
}
}
public display() {
for (int i = 0; i < arraysize; i++) {
System.out.println(array[i].getusername());
}
}
变量 arraySize 没有初始化。我尝试了这段代码,并在 readdata() 的第一行尝试中得到了一个空指针异常。
java.io.EOFException
at java.io.ObjectInputStream$PeekInputStream.readFully(Unknown Source)
at java.io.ObjectInputStream$BlockDataInputStream.readShort(Unknown Source)
at java.io.ObjectInputStream.readStreamHeader(Unknown Source)
at java.io.ObjectInputStream.<init>(Unknown Source)
at game.readdata(game.java:507)
最佳答案
您的文件是空的。
我不知道你为什么还要有一个 arraySize
变量,如果它总是与 array.length 相同。
只需删除它。如果您保留它,您当然不需要两种方法来设置它。
关于java - 如何在反序列化后初始化我的对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30419672/