У меня был взгляд вокруг, но ничто, кажется, не охватывает то, что я хочу сделать. Возможно ли сохранить объект экземпляра Class<?>
во время выполнения? Если да, то как мне это сделать?Возможно ли сохранить файл Java Class <?>?
ответ
Вы прошли через Концепция сериализации с использованием java. this link поможет вам в решении вашей проблемы.
Короткий Java.lang.Serializable - ваш друг, чтобы сделать это.
Я узнал о Serialization от this website. Он хорошо учит этой концепции. Я рекомендую начать там.
Это набор комментариев к Java Serialization, а не ответ. Только некоторая информация не (пока) в других ответах.
Сериализация не только сохраняет объект, но и сохраняет все объекты, на которые он ссылается, прямо или косвенно. Это может быть очень круто, но вы можете написать одну маленькую объектную информацию и обнаружить, что вы неожиданно создали файл размером 10 МБ.
Если ссылка, не косвенная, ссылается на объект, не связанный с сериализацией, в том, который вы пишете, запись будет вызывать исключение.
Если вы используете сокет, регулярно возвращайте поток ObjectOutput. В противном случае каждый раз, когда объект записывается иначе, чем первый, все, что отправляется, является ссылкой на исходные данные. Отправляйте один и тот же объект с последовательными значениями 1, 2, 3, 4 и 5, и чтение объекта будет иметь значения 1, 1, 1, 1 и 1. Кроме того, без сброса, использование памяти будет расти, поскольку оба объекта ObjectOutput и ObjectInput будет хранить почти все, что отправлено в память. (Хотя он будет хранить только одну копию каждого отдельного объекта.)
Сериализация не работает, если класс изменяется между тем, чтобы быть записанным и считанным. Тем не менее, разумная работа с системой экстернализации может обойтись. (И помните serialVersionUID, если ваша IDE позволит вам забыть.)
Внешняя политика позволяет вам написать код для сериализации класса. Это может быть очень полезно. Вы можете ввести номера версий и проверить их, и вы можете оставить данные, которые не нужны, или их можно воссоздать во время чтения. Однако требуется больше работы, чем автоматическая сериализация.
При чтении информации о внешности помните, что все ссылки могут ссылаться на объекты, данные которых еще не были получены; вы не можете последовательно суммировать суммы из списка дочерних объектов, например. Он может заплатить за вызов метода после readObject для установки значений, которые необходимо вычислить. (Часто бывает лучше отправить избыточную информацию, чем пересчитывать ее.)
Я все это усложнил.
- 1. Возможно ли реализовать метод с подписью List <Class <? расширяет аннотацию >> в Java?
- 2. Поддержка Java Wildcard Класс <T> в список <Class<T>>, возможно?
- 3. Java - это массив типа Class <? расширяет MyType> возможно?
- 4. Список <Class>() против Список <Class> (0)
- 5. Значение <class> :: <class>(): interface(), interface()
- 6. Возможно ли сохранить Func <T> в словаре?
- 7. java public class name <Item>
- 8. Java Generics - Class <Interface>
- 9. cmd: java <class> error
- 10. Java ArrayList <Class> to JSONArray
- 11. Java Class <?> эквивалент в C#
- 12. <identifier> ожидаемый & .class ожидается java
- 13. Общие сведения о Java Generics <T extends Class> и <? extends Class>
- 14. Можно ли использовать «<generator class =» org.hibernate.id.enhanced.SequenceStyleGenerator «>» вместо <generator class = "sequence">
- 15. Возможно ли шаблон basic_string <> :: iterator?
- 16. вектор <Class> или вектор <unique_ptr <Class>> в данном случае?
- 17. Есть ли более простой способ конвертировать из QList <Class*> в QList <QPointer <Class>>?
- 18. Iterator.class против итератора <String> .class
- 19. Что делает <Class *>?
- 20. HashMap <String, Class>
- 21. Java Stream Api - возможно ли сохранить исходный файл карты()?
- 22. Возможно ли сохранить файл базы данных в папке проекта Java?
- 23. Возможно ли это в Java: Карта <SomeObject, Map <SomeOtherObject >>?
- 24. Сохраните и загрузите QList <Class*> в файл
- 25. AttributeError: <class> экземпляр не имеет атрибута <>
- 26. Создать список <int> из списка <class>
- 27. «использование» для «<шаблон <class> класс T>»
- 28. Почему <hr class = "hidden" />?
- 29. Javas Class <?> эквивалент в C++
- 30. Возможно ли скопировать содержимое файла .class в другой файл?
Обратите внимание, что в этом случае Serialization и Externalization не сохраняют объект экземпляра. Они предназначены для сохранения достаточной информации, чтобы иметь возможность создавать новый объект с одинаковыми значениями в полях в той же или другой JVM. В частности, это не включает байтовые коды. Если вам тоже нужны, загляните в RMI. –