Я запустил этот код, и он работает, что означает, что вы, скорее всего, прочитали перед тем, как писать, или вы получили исключение, например InvalidClassException: no valid constructor
, которое имеет смысл в вашем случае.
Код, который я запустил:
public class SavedObject implements Serializable
{
public static void main(String[] args) throws IOException, ClassNotFoundException
{
new SavedObject();
}
private final int random;
private SavedObject() throws IOException, ClassNotFoundException
{
random = ThreadLocalRandom.current().nextInt();
File file = new File("Object.txt");
save(file);
read(file);
}
private void save(File file) throws IOException
{
FileOutputStream fileOutput = new FileOutputStream(file);
ObjectOutputStream objectOutput = new ObjectOutputStream(fileOutput);
objectOutput.writeObject(this);
objectOutput.close();
fileOutput.close();
System.out.println(this);
}
private void read(File file) throws IOException, ClassNotFoundException
{
FileInputStream fileInput = new FileInputStream(file);
ObjectInputStream objectInput = new ObjectInputStream(fileInput);
Object obj = objectInput.readObject();
System.out.println(obj);
objectInput.close();
fileInput.close();
}
public String toString()
{
return "SavedObject(Random: " + random + ")";
}
}
Какие отпечатки:
SavedObject(Random: -2145716528)
SavedObject(Random: -2145716528)
Также несколько советов для вас:
- Не пытайтесь поймать, если вы
throws
- Иметь более удобочитаемые имена переменных
- Отправить больше кода в следующем вопросе
- ObjectOutputStream не рекомендуется, если вы можете, вы должны записать значения, как они
- Не используйте
throws
«Исключение», вместо этого используйте throws
» - Поместите файл вместо file.toString ()