0

我创建了一个这样的 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)

我在哪里可能是错的?

4

2 回答 2

0

ArrayList<Invoice> list = (ArrayList<Invoice>) new ArrayList(); 发票 r = 新发票 (); r 。设置公司名称(公司名称);r 。设置价格(价格);列表 。add (r)} } 你应该只添加调用对象......你试图直接插入字符串......

于 2013-03-31T04:27:59.120 回答
0

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

  1. 声明和赋值。你有ArrayList<Invoice> list = (ArrayList<Invoice>) new ArrayList();. 虽然代码可以工作,但很难理解为什么在分配期间不使用泛型并进行强制转换。接下来,为了避免紧密耦合,我们通常将变量声明为接口,而不是具体实现。更正,您将拥有以下行:List<Invoice> list = new ArrayList<Invoice>();.
  2. 填充集合。当您声明您的列表仅包含class的实例时Invoice,您将能够仅添加Invoice对象和继承自的对象Invoice。Onviously,list.add(r.getCompanyName());你试图添加一个字符串,它不扩展Invoice,也不是它的任何子类。所以,只需添加对象:list.add(r)就可以了。
于 2013-03-31T05:09:31.430 回答