我有一个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属性的实现机制是怎么弄的,望有人能帮我
谢谢~~~~

解决方案 »

  1.   


    在你的jsp页面中addresses属性应该是String类型,只是在javabean内部使用arraylist存储我以前也提出过类似的问题,你看看
    http://community.csdn.net/Expert/TopicView.asp?id=5448371
    也许会有帮助的.
      

  2.   

    那我像这样写:
    private ArrayList<String> addresses;public List getAddresses() {
    return this.addresses;
    }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;
    }
    设置的类型和取得的类型不一致,
    这是算一个属性还是说不构成属性啊?
      

  3.   

    就从你的BEAN中
    返回值是String类型
    答案在你的
    public String getAddresses()方法..
      

  4.   


    这算是属性.
    在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,就无所谓什么属性不属性的了.
      

  5.   


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