Я пытаюсь сделать свои классы Serializable. Все мои классы, но все же это бросает мне NotSerializableException для некоторых других классов, которые я не могу найти в его использовании (например, com.sun.java.swing.plaf.windows.XPStyle, WClipboard).java.io.NotSerializableException для неизвестных классов
Что я могу сделать и как я могу обойти эти классы при сериализации или сделать их Serializable?
решаемые
Проблема была в LookAndFeel я использовал в моих JFrames и JDialogs (проблемы с XPStyle
). Второй (WClipboard
), он использовался сторонним классом, который я получил отсюда. Этот класс использует буфер обмена.
Я сделал поле буфера обмена transient
и LookAndFeel Я не мог справиться, просто удалив его.
В общем, классы, связанные с пользовательским интерфейсом (например, XPStyle и WClipboard), намеренно не сериализуются, потому что они могут взаимодействовать с конкретными (т.е. родными) объектами, которые не могут быть сериализованы. – ControlAltDel
Это часто возникает, когда вы используете внутренние классы, которые являются сериализуемыми и вложенными внутри классов, которые расширяют компоненты Swing. Внутренний класс сериализует внешний класс вместе с собой, даже если это не ваше намерение. Решение: статическое. – EJP
Пожалуйста, взгляните на мой комментарий в следующем ответе. Я знаю причину, но не знаю решения :-) – Aleksandar