В отличие от других спецификаций Java, спецификация Java Beans довольно расплывчата.Идея состоит в том, что bean-компонент инкапсулирует некоторую функциональность многократного использования с акцентом на GUI.Во время этой спецификации существовала идея, что разработчики продают отдельные компоненты, например, некоторые элементы графического интерфейса.
Java Bean - это программный компонент многократного использования, которым можно визуально манипулировать в инструменте разработчика.
Спецификация отличает Java-бины от «обычных» библиотек Java:
Не все полезные программные модули обязательно должны превращаться в бины.Бины подходят для программных компонентов, которые можно визуально манипулировать и настраивать для достижения некоторого эффекта.Библиотеки классов являются подходящим способом предоставления функциональности, которая полезна для программистов, но не приносит пользы от визуальных манипуляций.
В спецификации не определены какие-либо требования для hashCode()
и equals()
.Это зависит от вас, чтобы реализовать или не реализовать их.Также нет требований к конструкторам.
Если ваш класс предоставляет некоторые повторно используемые функциональные возможности для GUI, вы можете назвать его Java Bean.Если ваш класс не рисует какие-либо элементы в GUI, не реагирует на события GUI, то это не Java-бин в смысле этой спецификации.Но, эй, как часто вы видите приложения, в которых GUI реализован на Java?:)
Многие разработчики называют Java-бин любым классом, который удовлетворяет только некоторым требованиям данной спецификации, в основном определенным в разделах 8.1, 8.2, 8.3, 8.6, и игнорирует любые другие требования, такие какте о слушателях и событиях.В этом смысле ваш класс является Java-бином.
Для hashCode () и equals (): Вы можете использовать некоторые свойства в hashCode()
и equals()
.Это зависит от варианта использования.Например, у вашего класса есть 4 атрибута: ID, имя, фамилия и любимый напиток.В одном случае использования вам может понадобиться различать экземпляры объектов только по именам.Тогда вы будете использовать только имя и фамилию в hashCode()
и equals()
и игнорировать ID и любимый напиток.В некоторых других случаях использования вы можете рассматривать этот класс как назначение напитка человеку, и вам нужно будет включить не только имя и фамилию, но и любимый напиток в hashCode()
и equals()
.В некоторых других случаях использования у вас может быть ограничение на то, что каждая комбинация атрибутов уникальна и для различения экземпляров достаточно использовать ID, поэтому у вас будет только один идентификатор атрибута в hashCode()
и equals()
.В зависимости от ваших целей вы будете применять эти методы по-разному.