无法将bean添加到ArrayList

时间:2013-03-31 04:23:28

标签: jsp servlets javabeans

我创建了一个像这样的JavaBean类。

package beans;

public class Invoice {
    private String companyName;
    private double price;

    public String getCompanyName() {
        return companyName;
    }

    public void setCompanyName(String companyName) {
        this.companyName = companyName;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

}

然后我创建了一个Servlet,在其中从HTML文件中获取参数,创建了一个Bean。我正在尝试将bean添加到ArrayList。

protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {

        String companyName = request.getParameter("txtCompany");
        double price = Double.parseDouble(request.getParameter("txtPrice"));

        ArrayList<Invoice> list = (ArrayList<Invoice>) new ArrayList();
        Invoice r = new Invoice();
        r.setCompanyName(companyName);

        list.add(r.getCompanyName());
        r.setPrice(price);

    }

}

但我在 .add

上收到此错误
The method add(Invoice) in the type ArrayList<Invoice> is not applicable for the arguments (String)

我可能错在哪里?

2 个答案:

答案 0 :(得分:0)

ArrayList&lt;发票&gt; list =(ArrayList&lt; Invoice&gt;)new ArrayList();发票r =新发票(); r。 setCompanyName(companyName); r。 setPrice(price); 清单。 add(r)}}你应该只添加invoce对象...你试图直接插入字符串......

答案 1 :(得分:0)

您的代码管理不善且有错误。

  1. 声明和作业。你有ArrayList<Invoice> list = (ArrayList<Invoice>) new ArrayList();。虽然代码可以正常工作但很难理解为什么你在分配期间不使用泛型并进行演员表演。接下来,为了避免紧密耦合,通常我们将变量声明为接口,而不是作为具体实现。更正,您将拥有以下一行:List<Invoice> list = new ArrayList<Invoice>();
  2. 填写收藏品。当您声明列出只包含 Invoice的实例时,您将能够添加InvoiceInvoice继承的对象和对象} 的。显然,使用行list.add(r.getCompanyName());,您尝试添加一个不扩展Invoice的字符串,也不添加任何子类。所以,只需添加对象:list.add(r),就可以了。