JavaBean的属性

属性是Bean组件内部状态的抽象表示，JavaBeans的属性可以分为以下四类：

Simple(简单的)：

Indexed(索引的)：

Bound(绑定的)：

Constrained(约束的)。

下面分别介绍这些属性的概念：

## 1．Simple(简单的)

一个简单属性表示一个伴随有get／set方法的变量，它依赖于标准命名约定来定义getXXX()方法和setXXX()方法；

它的使用语法如下:

public voidset<PropertyName>(<PropertyType>value)；

public <PropertType> get<PropertyName>()；

public boolean is<PropertyName>()：

对于Boolean类型的属性, 除了可以使用getXXX方法外，还可以使用isXXX方法来获得这个属性。

例如，对“userName”属性，假如这个属性的类型是String，我们可以采用下面的方法：

public void setUserName(String value)；

public String getUserName();

您可以设置的属性是读写、只读或者是只写。getXXX()方法和setXXX()方法可以使之具有读写属性;getXXX()方法将允许您只具有只读属性;setXXX()方法将允许您只具有只写属性。

具有简单的属性的JavaBean如例程1所示.

例l 具有简单的属性的JavaBean(ch5／WEB-INF／classes／SimpleBean．java)

1. package ch5;

2. public class SimpleBean

3. {

4. //type为属性的名字，类型是String

5. private String type；

6. //boolean的debug属性

7. private boolean debug=false：

8. //getXXX方法，返回这个属性的值

9. public String getType()

10. {

11. return this．type；

12. }

13. ／／setXXX方法，设置这个属性的值

14. public void setTyPe(String type)

15. {

16. this．type=type；

17.

18. }

19. ／／对于Boolean类型的属性， 可以使用isXXX方法来获得属性

20. public boolean isDebug()

21. {

22. return this．debug；

23. }

24. ／／设置Boolean类型的属性。

25. public void setDebug(boolean debug)

26. {

27. this．debug=debug；

28. }

29. }

在上面的代码中，由于debug的类型是Boolean，那么可以使用isDebug方法来获得这个属性。在这里isDebug和getDebug方法是一样的，它们之间可以进行内部转换。

## 2．Indexed(索引的)

一个Indexed索引属性表示一个数组值，同上所述的Simple简单属性一样，可以使用get/set方法取得数组中的值。

它的使用语法如下：

public void set<PropertyName>(int index，<PropertyType> value);

public void set<PropertyName>(<PropenyType[]> value)；

public <PropertyType[]> get<PropertyName>()；

public <PropertyType> get<PropertyName>(int index)；

例程2是使用索引的属性的例子。

例2

使用索引的属性的JavaBean(ch5／WEB-INF／classes／IndexBean．iava)

1. package com.jspdev．ch5；

2. public class IndexBean

3. {

4. ／／type为属性的名字，类型是String

5. private String[]type=new String[]{"jsp"，"ejb","servlet","javamail","jca"，"jdbc")：

6. ／／getXXX方法，返回这个属性的值

7. publicStringllgetType()

8. {

9. returnthis．type；

10. }

11. ／／setXXX方法，设置这个属性的值

12.

13. public void setType(String[]type)

14. {

15. this．type=type：

16. }

17. ／／另外的设置属性和获得属性值的方法

18. public void setType(int index,String value)

19. {

20. type[index]=value：

21. }

22. public String getType(int index)

23. {

24. return type[index]：

25. }

26. }

有了以上的Bean，我们就可以这样使用它了：

setType(4,"JavaBean")；

String type=getType(5)；

String[] s=getType()；

## 3．Bound(绑定的)

绑定属性提供一种机制，即通知监听器一个JavaBean组件的属性发生了改变。监听器实现了PropertyChangeListener接口并接收由JavaBean组件产生的PropertyChangeEvent对象，PropertyChangeEvent对象包括一个属性名字、旧的属性值，以及每-个监听器可能要访问的新属性值。

JavaBean实现了addPropertyChangeListener()和removePropertyChangeListener()方法，以便加入和删除属性变化监听器。PropertyChangeSupport．firePropertyChange()方法可以被使用，并传递属性名、旧值以及新值等信息。

## 4．Constrained(约束的)

约束属性和绑定属性类似，但是属性值的变化首先要被所有的监听器验证之后，值的变化才能由JavaBean组件发生作用。一个JavaBean的约束属性是指当这个属性的值要发生变化时，与这个属性已经建立厂某种连接的其他Java对象可否决属性值的改变。任何一个监听器都可以否决属性变化，JavaBean组件同意不使属性变化才能生效。

监听器实现了VetoableChangeListener接口，并接收由JavaBean组件产生的PropertyChangeEvent对象。JavaBean组件可以使用VetoableChangeSupport辅助程序类激活由监听器接收的实际事件。

使用一个JavaBean组件实例的引用来构造VetoableChangeSupport对象，JavaBean实现了用addVetoableChangeListerO方法和removeVetoableChangeLister()方法来加入或者删除可否决属性变化监听器。VetoableChangeSupport．fireVetoableChange()方法可以用来传递属性的名字、旧属性值和新的属性值等信息。

和绑定的属性一样，这里只介绍它的概念，在JSP开发中很少使用到这种属性。

l javaBean的方法

JavaBean的方法的编写和其他Java程序的方法一样容易编写，也就是说，它们两者是一样的。举一个简单的例子：

public void printMessage()

{

System．out．println("type is:"+tyPe)；

System．out．println("debug is："+debug)；

}

这就是一个JavaBean的方法，它只是标准的Java代码。