可再現例如:爲什麼此序列化邏輯失敗,並聲明'不匹配的可序列化字段'?
package test;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
import java.io.ObjectStreamField;
import java.io.Serializable;
public class mySerializable implements Serializable {
private static int f;
private static int g;
private static final ObjectStreamField[] serialPersistentFields = {
new ObjectStreamField("f", Integer.class),
new ObjectStreamField("g", Integer.class),
};
public static void main(String[] args) {
save();
}
public static void save() {
try {
FileOutputStream fileOut = new FileOutputStream("config" + ".ser");
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(new mySerializable());
out.close();
fileOut.close();
} catch (Exception ex) {
System.out.println("save()" + ex.getLocalizedMessage()); }
}
public static int getF() {
return f;
}
public static void setF(int f) {
mySerializable.f = f;
}
public static int getG() {
return g;
}
public static void setG(int g) {
mySerializable.g = g;
}
}
該程序打印: 節省():test.mySerializable;無與倫比的序列化字段(S)宣佈
'F'和'g'是靜態的。 –
@AndyTurner這就是ObjectStreamField的意義所在:我不正確地使用它嗎? – nicomp
'static'和'Serializable'是兩個完全不同的東西。在一天結束時,因爲你沒有實例變量,所以沒有什麼可以序列化的。 –