Да, концепция, которую вы ищете, называется сериализацией. На Sun есть прекрасный урок .
Идея состоит в том, что классы, которые вы хотите сохранить, должны реализовывать интерфейс Serializable. После этого вы используете java.io.ObjectOutputStream.writeObject () для записи объекта в файл и java.io.ObjectInputStream.readObject () для его считывания.
Вы не можете сериализовать все, поскольку есть вещи, которые не имеют смысла сериализовать, но вы можете обойти их. Вот цитата об этом:
Базовый механизм Java
Сериализация проста в использовании, но
Есть еще кое-что знать. Как
упоминалось ранее, только объекты помечены
Сериализуемый может быть сохранен.
java.lang.Object класс не
реализовать этот интерфейс. Следовательно,
не все объекты в Java могут быть
сохраняется автоматически. Хорошие новости
является то, что большинство из них - как AWT и
Swing GUI компоненты, строки и
массивы - сериализуемы.
С другой стороны, определенный
классы системного уровня, такие как Thread,
OutputStream и его подклассы, и
Сокет не сериализуем. В самом деле,
это не имело бы никакого смысла, если бы они
мы. Например, поток работает в
моя JVM будет использовать мою систему
объем памяти. Сохраняя это и пытаясь
запускать его в своей JVM не имеет смысла
совсем. Еще один важный момент о
java.lang.Object не реализует
Сериализуемый интерфейс - это то, что любой
класс, который вы создаете, который распространяется только
Объект (и никакой другой сериализуемый
классы) не сериализуемы, если
вы сами реализуете интерфейс
(как и в предыдущем примере).
Эта ситуация представляет проблему:
Что делать, если у нас есть класс, который содержит
экземпляр Thread? В таком случае,
можем ли мы когда-либо упорствовать объекты этого
тип? Ответ да, пока мы
расскажите механизм сериализации нашего
намерения, отмечая наш класс
Потоковый объект как переходный процесс.