Документы для [1 117] java.io.Serializable
являются, вероятно, почти столь хорошим объяснением, как Вы доберетесь:
время выполнения сериализации связывает с каждым сериализуемым классом номер версии, названный
serialVersionUID
, который используется во время десериализации, чтобы проверить, что отправитель и получатель сериализованного объекта загрузили классы для того объекта, которые совместимы относительно сериализации. Если получатель загрузил класс для объекта, который имеет другоеserialVersionUID
, чем тот из класса соответствующего отправителя, то десериализация приведет кInvalidClassException
. Сериализуемый класс может объявить свое собственноеserialVersionUID
явно путем объявления поля, названногоserialVersionUID
, который должен быть статичным, окончательным, и типаlong
:ANY-ACCESS-MODIFIER static final long serialVersionUID = 42L;
, Если сериализуемый класс явно не объявит
serialVersionUID
, то время выполнения сериализации вычислит значение по умолчаниюserialVersionUID
значение для того класса на основе различных аспектов класса, как описано в Java(TM) Object Serialization Specification. Однако это , настоятельно рекомендовал , который все сериализуемые классы явно объявляютserialVersionUID
значения, начиная со значения по умолчаниюserialVersionUID
, вычисление очень чувствительно к деталям класса, которые могут варьироваться в зависимости от реализаций компилятора и могут таким образом привести к неожиданномуInvalidClassExceptions
во время десериализации. Поэтому для гарантии последовательногоserialVersionUID
значение через различные реализации компилятора Java сериализуемый класс должен объявить явноеserialVersionUID
значение. Также настоятельно рекомендуется, что явныйserialVersionUID
объявления используют частный модификатор, если это возможно, так как такие объявления применяются только к сразу полям классаserialVersionUID
объявления, не полезны как наследованные участники.
You would like to take a look at JFormattedTextField
Formatted text fields provide a way for developers to specify the valid set of characters that can be typed in a text field
This is a subclass of JTextField, so you can use it like this:
JTextField textField = new JFormattedTextField(NumberFormat.getInstance());
numberField = new JFormattedTextField(NumberFormat.getInstance());
Хотя существует чистое зло JFormattedTextField
, нет тривиального способа сделать это, используя только библиотеку Swing. Лучше всего реализовать такую возможность с помощью DocumentFilter
.
Некоторый код, который я подготовил ранее. Немного описания.
Я думаю, что это лучшее решение:
JTextField textField = new JFormattedTextField(new MaskFormatter("###")); //
Вы можете создать красивое текстовое поле в java, которое принимает или допускает только числовые значения .. Вы даже можете установить точность для значений с плавающей запятой ... проверьте код в zybocodes
{{ 1}}