求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;那这个方法就不对了,类型不匹配,编译就会出错.