Public boolean isEnabled()
Public void setEnabled(boolean b)
Правила построения методов доступа к атрибутам (аксессоров):
public void setИмяСвойства(ТипСвойства value);
public ТипСвойства getИмяСвойства();
public boolean isИмяСвойства().
Свойства бинов могут быть как базовых типов, так и объектными ссылками. Свойства могут быть индексированными, если атрибут бина массив. Для индексированных свойств выработаны следующие правила. Они должны быть описаны как поля-массивы, например
private String[] messages;
и должны быть объявлены следующие методы:
public ТипСвойства getИмяСвойства(int index);
public void setИмяСвойства(int index, ТипСвойства value);
public ТипСвойства [] getИмяСвойства();
public void setИмяСвойства(ТипСвойства [] value).
Так, для приведенного выше примера должны быть методы
Public String getMessages(int index);
Public void setMessages(int index, String message);
public String[] getMessages();
public void setMessages(String[] messages).
Кроме аксессоров, бин может иметь любое колличество других методов.
Интроспекция бинов при помощи Reflection API
Под интроспекцией понимается процесс анализа bean-компонента для установления его возможностей, свойств и методов. Для интроспекции можно воспользоваться классами и методами из библиотеки Reflection API. При использовании бина визуальная среда должна знать полное имя класса бина. По строковому имени класса статический метод forName(String className) класса java.lang.Class возвращает объект класса Class, соответствующий данному бину. Далее с помощью метода класса Class getField(),getMethods(),getConstructors() можно получить необходимую информацию о свойствах и событиях класса.
В частности, можно получить список всех public-методов данного класса. Исследуя их имена, можно выделить из них аксессоры и определить какие атрибуты (свойства) есть у данного бина и какого они типа. Все остальные методы, не распознанные как аксессоры, являются bean-методами.
В результате соответствующая визуальная разработки может построить диалог, в котором будет предоставлена возможность задавать значения этих атрибутов. Наличие конструктора по умолчанию позволяет построить объект bean-класса, set-методы позволяют установить в этом объекте значения атрибутов, введенные пользователем, а благодаря сериализации объект с заданными атрибутами можно сохранить в файл и востановить значение объекта при следующем сеансе работы с данной визуальной средой. Более того, можно изобразить на экране внешний вид бина (если это визуальный бин) в процессе разработки и менять этот вид в соответствии с задаваемыми пользователем значениями атрибутов.
События
Еще одним важным аспектом технологии JavaBeans является возможность бинов взаимодествовать с другими объектами, в частности, с другими бинами. JavaBeans реализует такое взаимодествие путем генерации и прослушивания событий.
В приложении к бинам взаимодействие объектов с бином через событийную модель выглядит так. Объект, который интересуется тем, что может произойти во внешнем по отношению к нему бине, может зарегистрировать себя как слушателя (Listener) этого бина. В результате при возникновении соответствующего события в бине будет вызван определенный метод данного объекта, которому в качестве параметра будет передан объект-событие (event). Причем если зарегистрировалось несколько слушателей, то эти методы будут последовательно вызваны для каждого слушателя.
Такой механизм взаимодействия является очень гибким, поскольку два объекта – бин и его слушатель – связаны только посредством данного метода и параметра-события.
Одним из способов экспорта событий является использование связанных свойств. Когда значение связанного свойства меняется, генерируется событие
и передается всем зарегистрированным слушателям посредством вызова метода proertyChange().