日期:2014-05-18  浏览次数:20628 次

求JavaBean的属性的实现机制
我有一个JavaBean是这样写的

……
private   ArrayList <String>   addresses;

public   String   getAddresses()   {
StringBuffer   sb   =   new   StringBuffer();
for(String   address:addresses){
sb.append(address);
}
return   sb.toString();
}
public   void   setAddresses(String   addresses)   {
String[]   str=addresses.split( "; ");
ArrayList <String>   array   =   new   ArrayList <String> ();
for(String   s:str){
array.add(s);
}
this.addresses   =   array;
}
……

如果这样的话我的addresses属性的类型是ArrayList <String> 类型还是String类型呢?


以前听说Java是没有属性的,而是通过命名规范来实现属性。我就不太明白Java属性的实现机制是怎么弄的,望有人能帮我
谢谢~~~~


------解决方案--------------------

在你的jsp页面中addresses属性应该是String类型,只是在javabean内部使用arraylist存储

我以前也提出过类似的问题,你看看
http://community.csdn.net/Expert/TopicView.asp?id=5448371
也许会有帮助的.
------解决方案--------------------
就从你的BEAN中
返回值是String类型
答案在你的
public String getAddresses()方法..
------解决方案--------------------

这算是属性.
在jsp中使用 <jsp:setProperty name= "myBean " property= "addresses "> 时会按照addresses的名称调用方法setAddresses(String addresses)方法.即,按照set+property(首字母大写)规则找到setAddresses方法.具体这个方法里执行什么操作可不管.注意,这个方法的参数名称可任意,不一定要用addresses.

<jsp:getProperty...> 与上面类似.

其实javabean和普通的类很相似,但多了setter/getter方法.例如setAddresses()方法和getAddresses()方法也可以用这个bean的实例对象调用.单纯地说这个类(比如你上面写的这个)是不是javabean是没有意义的,要在jsp中配合使用 <jsp:useBean...> <jsp:setProperty...> <jsp:getProperty...> 才能表明把它当作javabean来使用.否则就谈不上是javabean,就无所谓什么属性不属性的了.


------解决方案--------------------

public List getAddresses() {
return this.addresses;
}
这里如果前面的声明是private ArrayList addresses;是不矛盾的.因为ArrayList是List接口的实现.如果前面的声明是private String addresses;那这个方法就不对了,类型不匹配,编译就会出错.